我正在使用5个自定义对象,并且需要能够将它们保存(序列化)到文件中并在以后重新加载它们。所有对象都实现了Serializable,我可以单独保存并重新加载它们。
该程序基本上是模仿关系数据库,但我不能使用实际的数据库。
我的潜在问题是,一个或两个对象包含其他对象。从我的测试来看,似乎子对象完全保存在主对象中。
public foo1(Object o){
foo2(o);
//some other stuff
}
...
public foo2(){
//some stuff
}
当反序列化foo1对象时,它会正确地重新创建自己,包括任何foo2对象。
然而,我认为 foo2对象只是因为它们是foo1的一部分而被指向,并且包含foo2副本的foo1的任何后续实例将基本上创建更多foo2的相同但独立的实例。
我担心这会导致在程序加载所有foo1时可能会在内存中创建数百个相同foo2的副本。
假设情况属实,那么实施此流程的更好方法是什么?
答案 0 :(得分:3)
没有。保留对象图的完整性。如果它包含对单个对象的多个引用,则在反序列化时保留。