Eclipse MAT分析器

时间:2018-05-09 16:02:16

标签: java eclipse jenkins jenkins-plugins eclipse-memory-analyzer

我使用工具 Eclipse MAT Analyzer 并观察LEAK支持有如下所述的一个问题,

One instance of "hudson.model.Hudson" loaded by "org.eclipse.jetty.webapp.WebAppClassLoader @ 0x3c0001f48" occupies 2,129,624,192 (95.23%) bytes.

The memory is accumulated in one instance of "hudson.model.Hudson" loaded by "org.eclipse.jetty.webapp.WebAppClassLoader @ 0x3c0001f48".



Keywords
org.eclipse.jetty.webapp.WebAppClassLoader @ 0x3c0001f48
hudson.model.Hudson

这是什么意思?这是什么原因?

更多信息:

1)此对象的浅尺寸= 312,保留尺寸= 2000000000    我理解浅尺寸意味着一个对象的大小和保留的大小是2GB,那么它是否意味着6410256个对象的存活?

2)这是jenkins,我正在尝试分析jenkins的工作数量,那么我怎样才能确定这个对象在内存中是不经常引用(或者)有哪些免费方法这个?

谢谢,
哈利

1 个答案:

答案 0 :(得分:0)

如果不分析代码,这意味着什么以及导致它的原因无法解决。 Eclipse MAT Analyzer只能显示更精确的手动代码分析的价值。

  1. X的 retained size 是X在垃圾回收时将被GC删除的对象的总大小。这意味着还包含仅通过X以某种方式引用的实例大小。
  2. 要找出引用实例的位置和原因,您需要了解代码:
    • hudson.model.Hudson Dominator Tree 开始,查看代码,了解实例的使用原因和方式。
    • 设置断点并以 debug 模式启动应用程序,以查看实例字段的当前值。您还可以在构造函数中使用所谓的Tracepoints来获取控制台上的输出,而无需在每次创建实例时暂停应用程序。