gpt4 book ai didi

java - 如何在 Java + JNI + C++ 进程中查找内存泄漏

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:04 30 4
gpt4 key购买 nike

我有一个用 java 编写的项目,该项目使用 JNI 使用 C++ 库。所有的代码都是我们自己写的,所以我有所有的源代码。

几个小时后,机器内存不足,尽管我的进程只是遍历文件,并且与前一个文件相关的所有内存都已删除。

我确定存在内存泄漏,通常我使用 Valgrind,但他似乎不能很好地应对 Java,并认为 JVM 正在泄漏,即使对于“hello world”java 项目也是如此。

我已经使用单元测试测试了 C++ 部分(主要流程),并在单元测试中使用了 valgrind,但没有发现任何泄漏。它不能证明任何事情,因为我可能错过了许多潜在的流量。

我的主要问题是,如何找到泄漏点?

了解谁在消耗内存,java 还是 native 部分,将非常有帮助?他们在同一个过程中。

谢谢。

最佳答案

您可以使用 jemallocdebug native memory leaks . This blog post有一个使用 jemalloc 调试 java 应用程序中的 native 内存泄漏的详细示例。

关于java - 如何在 Java + JNI + C++ 进程中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33334126/

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