当你序列化和反序列化一个Object保存状态时?

时间:2017-09-22 20:53:23

标签: java serialization deserialization heap

我知道Java中的对象存在于Heap中,但是当我开始序列化对象并在反序列化之后,它的状态会保持在堆上吗?还是在不同的地方?

编辑: 我的意思是,JVM如何在堆上重新创建一个新对象?只是阅读文件?

我想知道在JVM破坏对象之前和之后堆上发生了什么?要执行此操作,内存中是否存储了某些内容,或者序列化和反序列化了文件中的所有信息?

1 个答案:

答案 0 :(得分:1)

当你序列化一个对象(我想你正在使用ObjectIn/OutputStream)时,你正在将一个Java对象转换成一个流中的二进制数据。这是流可以去任何地方。它可以转到Web服务器或文件或其他内容。根据我的经验,将对象序列化为文件是最常见的。

对象序列化后,它存储在硬盘/ SSD上。但是,在程序完成之前,还会在内存中创建对象的独立副本。它不能从内存中消失,因为你可能想再次使用它。