繁体   English   中英

如何在Java中找到匿名类的GC根?

[英]How to find GC roots of Anonymous Classes in java?

就在今天,我发现我的应用程序中存在大量的作为匿名类创建的对象的内存泄漏。 这是一个经典示例,每个对象都有自己定义的类并放入堆中。

在运行时内存分析器中查找并不是一件容易的事,Eclipse Memory Analyzer完成的堆转储分析也没有帮助。

我想知道如何记录运行时使用线程ID(或至少是父类加载器)创建的所有匿名类。

我认为单凭这件事就可以轻松找到根本原因。

我不确定列出所有匿名类是否可以带您到任何地方,通常有很多匿名类。

您可能需要的是逻辑,以搜索内部类引用(包括匿名类)保留的类的实例。

JProfiler中 ,有一个相应的检查:

在此处输入图片说明

检查创建的对象集包含所有此类实例,然后您可以显示GC根目录的路径:

在此处输入图片说明

免责声明:我的公司开发JProfiler。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM