Java 如何找到GC根的路径

Java 如何找到GC根的路径,java,memory-management,Java,Memory Management,是否有一种纯java的方法来发现哪些引用阻止了一个实例成为GCd(特别是类装入器实例)?是否有方法至少统计对现有类装入器实例的引用数 一个可能的解决方案是使用ref-counter,但我无法控制引用这些类装入器实例的所有代码,我相信JVM必须已经有了计数器。我可以访问它们吗?是因为您只想知道GC的实际工作原理,还是因为某些特定的原因?一个参考计数器。或者使用静态变量。我正在构建一个包,它位于用户的应用程序服务器中,保存对我定义的类的引用,并从用户的类加载器动态加载。如果我使用弱引用来指向我的对象

是否有一种纯java的方法来发现哪些引用阻止了一个实例成为GCd(特别是类装入器实例)?是否有方法至少统计对现有类装入器实例的引用数


一个可能的解决方案是使用ref-counter,但我无法控制引用这些类装入器实例的所有代码,我相信JVM必须已经有了计数器。我可以访问它们吗?

是因为您只想知道
GC
的实际工作原理,还是因为某些特定的原因?一个参考计数器。或者使用静态变量。我正在构建一个包,它位于用户的应用程序服务器中,保存对我定义的类的引用,并从用户的类加载器动态加载。如果我使用弱引用来指向我的对象,我的对象会很快消亡,因为没有其他东西可以容纳它们。如果我使用强引用,我的对象会阻止用户的类装入器成为GCd。我在寻找一种方式来知道,我是唯一一个活着抱着它们的人,但实际上却没有抱着它们(就像一个自动清洁的指针)。