gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:12:28 26 4
gpt4 key购买 nike

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

 myInstance.getClass.getInstances()

新的 Scala 反射库可以做到这一点吗?是否有可能的解决方法?
在 SO 和 google 上搜索了反射 scaladoc,但奇怪的是找不到关于这个非常明显的问题的任何信息。

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

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

谢谢

编辑:这似乎至少可以通过使用 com.sun.jdi.ReferenceType.instances 从另一个 JVM“调试”JVM

最佳答案

“跟踪”一个类的所有实例几乎是不可取的,至少在默认情况下不是。这样做会产生相当大的成本,并且该机制必须避免硬引用,因为硬引用会阻止回收其他未引用的实例。这意味着使用一种引用类型和所有相关的机器。

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

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

关于scala - 如何使用scala反射获取给定类/特征的所有实例?对给定实例的所有引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14728800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com