我序列化了用户定义的链表类的对象,因为该列表的每个节点都在堆中获取内存位置,而反序列化是否已经为特定节点占用了内存位置,例如
如果节点2的内存即200已被占用,则节点1如何知道它以及列表如何反序列化? 或者在java中,内存分配以不同的方式发生。
答案 0 :(得分:2)
JVM负责对象在内存中的管理。在执行任何GC
之后,可以移动在内存中分配的对象,因此LinkedList
实际上并未指向固定地址,而是参考
Java没有pointers,只引用对象(安全引用)。引用类似于指针,因为它指向一个变量,一个对象,但是您无法查看或编辑此引用的地址内存(例如,与C不同)。
答案 1 :(得分:1)
一般来说,您不必在Java中手动执行有关堆的任何事情。
序列化不应影响堆,除非您对序列化节点有一些引用。
链接列表中的两个节点不需要知道其他节点在内存中的位置。
希望这能回答你的问题。