我正在使用jvisualvm分析堆转储。从报告中我可以看到类,实例数和大小。
我想知道的是 - 这些对象的源(实例化了哪个类)。对于给定的对象,如果我能够知道所有源类和每个类创建的实例数,我想可以很容易地识别出错误的候选者。
这有可能吗?如果是这样,是否有比其他工具更好的工具来提供此类信息?
答案 0 :(得分:3)
YourKit按大小和数量提供分配跟踪。您可以搜索创建的特定类并查找热点。评估版是免费的。 ;)
答案 1 :(得分:0)
答案 2 :(得分:0)
你试过吗
jhat <yourdump>
假设您的作品形式为:
私人Blah blah = new Blah();对于每个实例,您都可以看到谁拥有对它的引用。它还提供了强大的查询语言[OQL]。 请参阅示例: jhat OQL AND in where clause
但是如果你在其他地方创建它并简单地将它传递给另一个类字段,那么你将无法通过内存转储[使用任何工具]找到它,因为它只是一个快照。 / p>