gpt4 book ai didi

java - Java内存分析工具如何找到内存泄漏的行

转载 作者:行者123 更新时间:2023-11-30 10:55:01 24 4
gpt4 key购买 nike

我的代码有一些内存泄漏。我找到了内存分析工具 (MAT),据说它是最适合 Java 的工具之一。它看起来很花哨,并提供了很多问题的细节,以及关于它们的大量信息。但是,它没有说第一个要说的或者我找不到。

假设我的代码如下:

class LeakyClass{
//do some stuff in thousands of lines
void leaky_method(){
char[] chars = //some how cause memory leak --> line 12434
}
//do more stuff in thousands of lines
}

想想看,还有 30-40 个这样的类,而且不是我写的。

问题是 MAT 告诉我 char[] 有问题,但它没有说明任何关于 line 12434 或者我'我找不到。有没有办法找到 that line 或至少 classmethod 名称?如果只有一根线,我会搜索该线,但泄漏可能无处不在?

这是内存泄漏的图像: mem-leak

顺便说一句,我读了几个教程,但找不到任何相关内容。提前致谢,

最佳答案

如果您只有 HPROF 堆转储,则此信息不可用。您需要一个分析代理来记录每个分配的分配堆栈跟踪。

例如,JProfiler有这个能力。在 session 启动对话框中激活分配记录,然后进行堆转储。

在堆遍历器的“类” View 中,选择“char[]”并创建一个新的对象集。然后转到堆 walker 的“分配”选项卡,并检查所有此类分配的累积堆栈跟踪。

enter image description here

免责声明:我公司开发了 JProfiler。

关于java - Java内存分析工具如何找到内存泄漏的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com