【问题标题】:Eclipse MAT Analyser: Understanding leak suspect reportEclipse MAT Analyser:了解泄漏可疑报告
【发布时间】:2018-10-19 19:45:51
【问题描述】:

我使用工具 Eclipse MAT Analyser 观察到 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)这是詹金斯,我正在尝试分析詹金斯的工作数量,那么我怎样才能确定这个对象在内存中不必要地引用(OR)有什么方法可以释放到这里了吗?

谢谢,
哈利

【问题讨论】:

  • hudson.model.Hudson 类使用了大约 2Gb 的内存。由于我们对您的代码一无所知,因此无法告诉您原因。
  • @greg-449 我知道代码不存在,但是你能告诉我这是否意味着没有为此收集 GC?我需要知道这个错误在 MAT 中意味着什么
  • GC 无法收集hudson.model.Hudson 的实例,因为它在某处被引用。这两个问题是,它是否被不必要地引用了?一个实例真的需要那么多内存吗?
  • @howlger 我提供了更多信息,请查看此

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


【解决方案1】:

如果不分析代码,这意味着什么以及导致它无法回答的原因。 Eclipse MAT Analyzer 只能显示更精确的手动代码分析似乎值得的地方。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多