如何使用scala获取给定类/特征的所有实例?所有引用给定的实例?

时间:2013-02-06 12:11:33

标签: scala reflection instance scala-2.10

我知道可以获取类和给定实例的成员,但为什么难以获取给定类的所有实例? JVM不跟踪类的实例吗? This doesn't work in Java

 myInstance.getClass.getInstances()

这是否可以使用新的scala反射库?有可能的解决方法吗? 搜索反射scaladoc,SO和谷歌,但奇怪的是找不到关于这个非常明显的问题的任何信息。

我想试验/破解超图数据库,受hypergraphDB的启发,直接查询对象图,预留序列化。

此外,我需要访问对给定对象的所有引用。现在这个信息肯定存在(GC),但可以通过反思来访问吗?

感谢

编辑:这似乎至少可以通过com.sun.jdi.ReferenceType.instances从其他JVM“调试”JVM来实现

1 个答案:

答案 0 :(得分:3)

“保持跟踪”类的所有实例几乎不可取,至少在默认情况下是这样。这样做需要相当大的成本,并且该机制必须避免硬性引用,否则会阻止回收其他未引用的实例。这意味着使用其中一种参考类型和所涉及的所有相关机制。

垃圾收集不需要是类感知的。它只关心实例是否可达。

也就是说,您可以编写代码来逐个类地跟踪实例化。您必须使用java.lang.ref中的一个参考类来跟踪它们。

相关问题