如何检测在 Netbeans 中进行分析时未显示的内存泄漏? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

【讨论】:

是的,在使用 VisualVM 之后,我发现堆通常几乎是所用堆的两倍。但是,应用程序实际使用的内存量却在不断增长。

以上是关于如何检测在 Netbeans 中进行分析时未显示的内存泄漏? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 7 Enterprise 到 Samsung Galaxy Tab A 在 Chrome 开发人员工具中进行远程调试时未检测到设备

jvisualvm 在分析时未显示有关我的应用程序包的任何信息

makemigrations 响应 指定 app_label 时未检测到更改

尝试连接时未找到 H2 驱动程序

JNI 无法在 NetBeans 上检测到 __int64

在 J2ME 项目 (Netbeans 6.9.1) 中未检测到预处理器块