【发布时间】:2015-04-07 21:40:32
【问题描述】:
我们正在使用 OODBMS,它也允许 Java“实体”和序列化对象。数据库支持真正的图(没有“树”限制)并且序列化对象也可以安全地引用实体。数据库(几乎)透明地工作,我们可以做任何我们想做的事,而且它可以正常工作。
现在,我发现已被标记为“逻辑删除”的对象(使用简单的布尔标志,而不是内置的 DB 功能,因为 DB 没有这样的概念)被加载/保存在特定的对象图中。
我想知道哪些对象引用了那些“僵尸”对象。到目前为止,尝试使用反射来迭代图形还没有奏效。我可以简单地使用 Java 序列化来导出对象图,而不是 DB,这也会导致“僵尸”对象被序列化。
我的问题是:我能否以某种方式提取有关在序列化过程中引用“僵尸”对象(“父”对象)的对象的信息?可以有不止一个,但只要我有一个,我就可以迭代地工作,直到我杀死所有那些无效的引用。
【问题讨论】:
-
您具体使用的是哪个 OODBMS?哪个版本?
-
我们引入“逻辑删除”标志的真正原因是因为数据库不提供查找“父”对象的方法,因此也不为实体提供“GC”。长期目标是验证所有标记为逻辑删除的对象是否真正未被引用,因此我们最终可以删除它们。
标签: java serialization