JProfiler-“运行GC”按钮与堆快照的“在堆快照中执行完整的GC”选项

时间:2019-02-15 22:35:23

标签: java garbage-collection classloader jprofiler

我有创建类加载器实例(URLClassLoader)并使用它动态加载Jar文件的应用程序。接下来,使用反射创建Jar中的类的实例。最后,所有引用都以假定类加载器及其相关对象和类被垃圾回收的方式作废。

JProfiler 10.1.5 中进行性能分析期间,我单击工具栏按钮“ 运行GC ”,然后进行堆快照(无论是否“在堆中执行完整的GC”快照”选项)。如我所料,堆上没有Class Loader实例,没有相关的对象和类,它们会收集垃圾。

另一方面,当我不使用“运行GC ”按钮,而是使用“在堆快照中执行完整GC”进行很多堆快照时选项 selected (带有“ 仅保留强引用保留的对象”子选项),我总是在快照中看到我的Class Loader实例以及相关内容对象和类。他们没有被垃圾收集!为什么?

1 个答案:

答案 0 :(得分:1)

JProfiler将类加载器视为GC根,堆漫游器将不会尝试收集类加载器。