2

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

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

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

4

3 回答 3

3

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

于 2012-07-17T09:27:24.843 回答
0

尝试:

http://dr-brenschede.de/bheapsampler易于理解的总结或 http://www.eclipse.org/mat更详细的分析

这些工具完全符合您的要求

于 2012-07-20T14:35:00.853 回答
0

你试过了吗

jhat <yourdump>

假设您的作品具有以下形式:

私人废话=新废话();

对于每个实例,您都可以看到谁拥有对它的引用。它还提供了强大的查询语言 [OQL]。参见示例: jhat OQL AND in where 子句

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

于 2012-08-01T16:51:46.330 回答