0

我有一个带有骨架(元数据)和大型数据对象的数据模型。我想将骨架保存在内存中并保存对数据对象的弱引用。我了解如何使用纯 Java 实现这一点,如何创建 WeakHashMap 并进行清理等。但我想知道在数据对象被 GC 后恢复数据对象的最佳方法是什么?

我是否应该向我的地图添加一个技术密钥,将其分配给数据对象中的一个字段,以便我可以再次找到它?或者我应该调用 db.ext().getId() 并使用此 ID 作为技术密钥?如果是这样,加载父级时如何获取这些键?你有什么建议?

4

1 回答 1

0

我会为您的大型数据对象添加一个技术密钥。然后将此技术密钥存储在您的元数据类中。现在,当您获得大型数据对象时,您可以通过它的技术关键获得它。这是一个非常简单的解决方案。

Db4o 实际上使用弱引用来返回相同的对象并避免不必要的反序列化。因此,当您请求一个对象并且尚未被 GC 收集时,db4o 将返回相同的对象。

于 2009-12-16T15:51:55.510 回答