Java 序列化
Posted 韩冬冬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 序列化相关的知识,希望对你有一定的参考价值。
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();
- 第一次写入的时候插入一些头信息,以后再写就不会再插入了。这实际是 Java 做的优化,通过该优化从而减少 socket 传输的开销
- 它之所以可以这么做优化,前提是持有 MyObject 的引用,也就是说,不会释放掉 MyObject 的引用
- 如果你是长连接的方式(socket 中很常用),ObjectOutputStream 会一直持有你以前发送过的对象的引用,从而导致 JVM 在进行垃圾回收的时候不能回收之前发送的对象的实例,经过漫长时间的运行,最终导致内存溢出
以上是关于Java 序列化的主要内容,如果未能解决你的问题,请参考以下文章