码迷,mamicode.com
首页 > 编程语言 > 详细

Java 序列化

时间:2018-11-21 16:19:13      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:object   cto   pre   tput   就是   sock   垃圾   信息   int   

FileOutputStream fos = new FileOutputStream("c:\\test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
 
MyObject myObj = new MyObject();
myObj.str1 = "test1";
myObj.str2 = "test2";
for (int i = 0; i < 5; i++) {
    oos.writeObject(myObj);
}
fos.close();
  1. 第一次写入的时候插入一些头信息,以后再写就不会再插入了。这实际是 Java 做的优化,通过该优化从而减少 socket 传输的开销
  2. 它之所以可以这么做优化,前提是持有 MyObject 的引用,也就是说,不会释放掉 MyObject 的引用
  3. 如果你是长连接的方式(socket 中很常用),ObjectOutputStream 会一直持有你以前发送过的对象的引用,从而导致 JVM 在进行垃圾回收的时候不能回收之前发送的对象的实例,经过漫长时间的运行,最终导致内存溢出

Java 序列化

标签:object   cto   pre   tput   就是   sock   垃圾   信息   int   

原文地址:https://www.cnblogs.com/handongdong/p/9994256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!