gpt4 book ai didi

java - 内存泄漏在 MAT 中显示为 GC root : Native Stack

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:39 24 4
gpt4 key购买 nike

我有一些我运行的第三个库代码,一段时间后我遇到了 OutOfMemoryError。所以我启动了 Eclipse MAT 并分析了内存。现在似乎无法释放内存,因为有一个对象显示为 GC root: Native Stack。阅读 documentation :

In or out parameters in native code, such as user defined JNI code or JVM internal code. This is often the case as many methods have native parts and the objects handled as method parameters become GC roots. For example, parameters used for file/network I/O methods or reflection.

现在我的问题是:如何确认该对象在 JNI 或其他地方使用(即如何找到使用它的代码)?我可以以某种方式处理该对象吗?我还有哪些其他选择?

已经感谢您的帮助!

最佳答案

显示为 GC root: Native Stack 的对象原来是 Eclipse 调试器的问题。当应用程序在没有调试器的情况下启动时(即使用“运行”而不是“调试”),问题就消失了。这也是我无法在我的项目中找到在 JNI 中使用的对象的代码的原因(因为它们不是)。

在不调试的情况下找到真正的内存泄漏有点困难,但是使用 Eclipse MAT 及其“查找泄漏嫌疑人”功能帮助很多!

关于java - 内存泄漏在 MAT 中显示为 GC root : Native Stack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161323/

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