作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个用 java 编写的项目,该项目使用 JNI 使用 C++ 库。所有的代码都是我们自己写的,所以我有所有的源代码。
几个小时后,机器内存不足,尽管我的进程只是遍历文件,并且与前一个文件相关的所有内存都已删除。
我确定存在内存泄漏,通常我使用 Valgrind,但他似乎不能很好地应对 Java,并认为 JVM 正在泄漏,即使对于“hello world”java 项目也是如此。
我已经使用单元测试测试了 C++ 部分(主要流程),并在单元测试中使用了 valgrind,但没有发现任何泄漏。它不能证明任何事情,因为我可能错过了许多潜在的流量。
我的主要问题是,如何找到泄漏点?
了解谁在消耗内存,java 还是 native 部分,将非常有帮助?他们在同一个过程中。
谢谢。
最佳答案
您可以使用 jemalloc至 debug native memory leaks . This blog post有一个使用 jemalloc 调试 java 应用程序中的 native 内存泄漏的详细示例。
关于java - 如何在 Java + JNI + C++ 进程中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33334126/
我是一名优秀的程序员,十分优秀!