跟踪我自己创建的对象 类

Track objects created from my own classes

我有一个扩展 eclipse 产品的应用程序。让它 运行 超时,RAM 使用量增加到最大堆 space。

应用程序不执行任何操作,它只是停留在后台。我 运行 JProfiler,然后在 Live Memory 部分,我通过按 Mark current 按钮标记当前对象。查看 Difference 列,创建了数百个对象(char、HashMap、LinkedHashSet 等)。

JProfiler 中是否有一项功能允许我查看对象是否是从我的 类 之一分配的(例如,类型 A 的对象是从 类 分配的模式com.example.mypackage.*)?

这有助于查看是否是我造成了内存泄漏,或者我是否必须向其他人提交错误报告。

我愿意接受任何其他提供此类功能的分析器建议。

在 JProfiler 中,分配记录正是用于此目的。首先,确保会话设置中的调用树过滤器只包含您自己的包。

然后转到"Live Memory->Allocation Call Tree"并记录分配。在调用树中,您可以看到带有分配信息的累积调用堆栈。从主菜单调用 "View->Analyze->Show classes" 以显示为每个节点分配的特定 classes。您还可以 select 一个特定的 class 或打包并 select 灵活地显示分配树。

有一个关联的 "Allocation hot spots" 视图向您显示分配最多的调用堆栈。如果您只想查看自己的 classes,请在右上角的 "Hot spot options" 选择器中 select "Add to calling class"。