我有一个用 java 编写的项目,使用 JNI 使用 C++ 库。
所有的代码都是我们写的,所以我有所有的源代码。
几个小时后,机器内存不足,尽管我的进程只是迭代文件,并且删除了与前一个文件相关的所有内存。
我确信存在内存泄漏,通常我使用Valgrind,但似乎他不能很好地应对Java,并且认为JVM正在泄漏,即使对于“hello world”java项目也是如此。
我已经通过单元测试测试了 C++ 部分(主要流程),并在单元测试中使用了 valgrind,但没有发现任何泄漏。这并不能证明任何事情,因为我可能会错过很多潜在的流程。
我的主要问题是,如何找到泄漏?
了解谁在消耗内存,是 Java 还是本机部分,这将非常有帮助?他们处于同一过程中。
Thanks.
根据我的经验,Valgrind 实际上可以与 JVM 一起使用,并且它仍然是寻找 C/C++ 代码中泄漏的最佳工具,即使使用 JNI 也是如此。所以你的问题有点包含你需要的答案;)
如果您无法同时使用JNI和Valgrind,请参考Valgrind 和 Java.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)