gpt4 book ai didi

java - 如何查找java内存泄漏

转载 作者:行者123 更新时间:2023-12-04 06:59:13 25 4
gpt4 key购买 nike

我遇到了 Java 内存泄漏问题,由于某种原因,它没有出现在我的分析器 (Yourkit) 中。当我运行我的 Java 应用程序(带有一些用于监听、发送和处理数据的线程的服务器)时,似乎每次我获得一个新连接并且这个连接被删除时,一些内存没有被清理。至少,这是 Windows(和 Linux)所说的。

当我用我的分析器运行我的应用程序时,它只是按照它应该的方式显示内存,当一个线程关闭时,所有内存都会被清理。然而,实际上,过了一段时间 Java 就崩溃了,因为它使用了太多内存,所以不管我的分析器怎么说,我倾向于相信我确实使用了 Windows 和 Linux。运行垃圾收集也不会清理内存。

那么这可能是什么?我已经尝试了我所知道的一切,关闭线程,将所有对象设置为 null,删除每个数组的内容等。我很确定线程已关闭,因为 eclipse 和编译器以及打印输出似乎都证实了这一点。

有人有线索吗?

最佳答案

当 OutOfMemory-Error 发生时,您可以要求您的 VM 生成堆转储,然后分析此堆转储。

对于 Sun 的 HotSpot VM,您可以请求生成堆转储,如 here 所述.

要分析转储,您可以使用 jVisualVM 或 jhat。 (可能有更好的工具,不过到目前为止我还不需要它们。)

关于java - 如何查找java内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141337/

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