如何在 Netbeans 11 的分析器中将分析模式切换为内存模式?

How to switch the profiling mode to Memory mode in Netbeans 11's profiler?

我在 Linux 64 位机器(32 GB RAM,8 个虚拟 CPU)上使用 运行 Netbeans 11,打开 JDK 11。我想分析一个应用程序(这是 SOLR 的索引器),因为在长时间的 运行 生产后,我遇到内存不足错误,并且我看到已使用的内存(由 OS 报告)不断增加并且从未减少。它从 8GB 开始,几天后(有时是几周),达到 30GB 并抛出 OOM(Java 堆 space)。

我无法在我的开发机器(16 GB RAM,4 个 CPU)上重现这个 OOM,所以我决定使用 Netbeans 分析器,看看我是否能得到一些线索,了解是什么导致了 RAM 消耗增加时间.

我开始关注 Netbeans article 并在 2 个索引过程后看到以下内容(实际上在生产服务器上,索引过程将无限地一个接一个地进行,但一些索引过程可能会持续数天或数周):

所以我猜我的应用程序中存在内存泄漏。到目前为止,一切都很好。但是在上面提到的 Netbeans 文章中,他们告诉您 "Switch the profiling mode to Memory mode"(在名为 "Discovering the Source" 的章节中)。但是我找不到在哪里切换到内存。这就是我的 GUI 的样子:

如果我点击 "Profile Objects",我会看到与他们在文章中显示的内容接近的内容,但只有 "Live bytes" 和 "Live objects"。因此没有提及 "Generations",因为它们显示并且右上角的小箭头不提供它作为选择(仅 "Name"、"Live Bytes"、"Live objets")。

因此我来对地方了,如果是这样,我怎样才能得到其他列("Avg Age"、"Generations"、...),然后我怎样才能转到那个部分是导致源代码中的内存泄漏吗?或者也许有人可以建议另一篇更详细的(针对新手)文章/教程,介绍如何分析应用程序以查找内存泄漏?

非常感谢任何帮助:-)!

因此,要使 "Surviving generations metrics" 显示在 article, you have to select "Object" and then in "Profile" select one of the "Focused (Instrumented)" choice, and check "Track only live objects" as described in Netbeans' wiki 中,