【问题标题】:How do I detect a memory leak that is not showing up while profiling in Netbeans? [closed]如何检测在 Netbeans 中进行分析时未显示的内存泄漏? [关闭]
【发布时间】:2013-01-02 20:10:05
【问题描述】:

程序使用的总内存几乎没有由 Netbeans 的内置分析器记录。有一些非常大的对象没有显示出来,例如 WriteableRaster(我很快就会取消它)。就数量而言:如果分析器不考虑垃圾收集,我将从分析器获得总共 ~2.5GB,而程序正在使用 ~6GB。如果分析器确实考虑了垃圾收集,那么它将显示 ~100MB 正在使用(实时内存),而程序仍在使用 ~6GB。有什么方法可以使用分析器跟踪较大的对象,还是我必须使用其他工具?

【问题讨论】:

  • 你怎么知道程序正在使用 ~6 GB
  • 这是 6GB 的地址空间还是 6GB 的实际内存?这是完全不同的。
  • @assylias,这是任务管理器报告的内存量。我不确定具体细节,但我确信该程序正在填充我所有的内存 [8GB],在处于大约 2GB 的“静止状态”之后。该程序应该使用大量内存,但经过一些小改动后我不记得它一直在泄漏,我正在尝试查找源代码。

标签: java memory netbeans memory-leaks profiling


【解决方案1】:

任务管理器显示的数量是堆的总大小,可能大部分是空闲/未使用的。所以它可能与泄漏无关。

如果您想使用更少的内存,您可以减小最大堆大小参数,但您可能会在某个阶段耗尽内存...

【讨论】:

  • 是的,在使用 VisualVM 之后,我发现堆通常几乎是所用堆的两倍。但是,应用程序实际使用的内存量却在不断增长。
猜你喜欢
  • 1970-01-01
  • 2016-05-14
  • 2011-10-07
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多