如何使用:内存分析器工具:合并GC根的最短路径:排除自定义字段?

时间:2019-02-06 23:58:59

标签: java eclipse eclipse-memory-analyzer

You get this popup.

但是,我不知道要在-excludes中加上什么。我尝试在下面添加所有四个,但仍然从ClassName.nameOfFieldInClass中看到不需要的引用!

  1. org.package.ClassName
  2. org.package.ClassName:referent
  3. org.package.ClassName:nameOfFieldInClass
  4. ClassName:nameOfFieldInClass

,它仍然显示我不想看到的引用!该文档对弹出窗口不是很有帮助: “某些类的字段在查找路径时应被忽略。例如,这允许忽略通过弱引用或软引用参考对象的路径。”

The online documentation is even worse“-排除某些类的字段,这些字段在查找路径时应被忽略。例如,这允许忽略通过弱引用或软引用引用的路径。”

我要在-excludes中输入什么?

Looking through the openjdk source code,我看到WeakReference和SoftReference都有一个私有引用字段。结果,-excludes应该是(fullClassName):( variableName)。现在我只需要弄清楚为什么它不能在我的堆上工作。也许约定对于静态字段是不同的?

1 个答案:

答案 0 :(得分:0)

这真令人沮丧。当我只有(注意没有字段/变量)时它起作用了:

  1. java.lang.ref.WeakReference:referent
  2. java.lang.ref.SoftReference:referent
  3. org.my.ClassName

但是,当我使用下面的-排除项时,即使查询的限制更加严格,我还是可以得到更多的结果!

  1. java.lang.ref.WeakReference:referent
  2. java.lang.ref.SoftReference:referent
  3. org.my.ClassName
  4. org.my.ClassName2