Java heapdump分析查找实例化对象的源代码

Java heapdump分析查找实例化对象的源代码,java,heap,out-of-memory,jvisualvm,jhat,Java,Heap,Out Of Memory,Jvisualvm,Jhat,我正在使用jvisualvm分析堆转储。从报告中,我可以看到类、实例数和大小 我想知道的是这些对象的源(实例化了哪个类)。对于一个给定的对象,如果我能知道所有的源类以及每个源类创建的实例的数量,我想很容易识别出坏的候选对象 这可能吗?如果是这样,有没有比其他工具更好的工具来提供此类信息?YourKit提供了按大小和数量的分配跟踪。您可以搜索创建的特定类并查找热点。评估版是免费的。;) 试试看: 为便于理解的摘要或 以便进行更详细的分析 这些工具可以很好地满足您的需求您尝试过吗 jhat <

我正在使用jvisualvm分析堆转储。从报告中,我可以看到类、实例数和大小

我想知道的是这些对象的源(实例化了哪个类)。对于一个给定的对象,如果我能知道所有的源类以及每个源类创建的实例的数量,我想很容易识别出坏的候选对象


这可能吗?如果是这样,有没有比其他工具更好的工具来提供此类信息?

YourKit提供了按大小和数量的分配跟踪。您可以搜索创建的特定类并查找热点。评估版是免费的。;)

试试看:

为便于理解的摘要或 以便进行更详细的分析

这些工具可以很好地满足您的需求

您尝试过吗

jhat <yourdump>
jhat
假设你的作品是这样的:

私人的废话=新的废话()

对于每个实例,您都可以看到谁持有对它的引用。它还提供了强大的查询语言[OQL]。 有关示例,请参见:


但是,如果您在其他地方创建了它,并简单地将其传递给另一个类字段保存,您将无法从内存转储(使用任何工具)中找到它,因为它只是一个快照。

@VenKatari您可能会发现其他商业探查器对您同样有效或更好。我还没有全部试过。