就在今天,我在我的应用中发现内存泄漏,其中大量对象被创建为匿名类。这是一个典型的例子,每个对象都有自己的类定义并放入堆中。
在运行时找到内存探查器并且Eclipse Memory Analyzer完成的堆转储分析也没有用。
我想知道如何使用线程ID(或至少是父类加载器)记录在运行时创建的所有匿名类。
我认为单独这件事会让找到根本原因变得微不足道。
答案 0 :(得分:1)
我不确定列出所有匿名类会让你到任何地方,通常会有很多。
您可能需要的是搜索内部类引用(包括匿名类)保留的类实例的逻辑。
在JProfiler中,有相应的检查:
检查创建的对象集包含所有此类实例,然后您可以显示GC根目录的路径:
免责声明:我公司开发JProfiler。