首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发现Java + JNI + C++进程中的内存泄漏

如何发现Java + JNI + C++进程中的内存泄漏
EN

Stack Overflow用户
提问于 2015-10-26 03:31:49
回答 2查看 9.9K关注 0票数 4

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

几个小时后,机器耗尽了内存,尽管我的进程只是迭代文件和所有关于先前删除的文件的内存。

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

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

我的主要问题是,我怎样才能找到我的漏洞?

知道谁在消耗内存是非常有帮助的,是java还是本机部分?它们处于相同的过程中。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-02-25 02:16:10

您可以使用jemalloc to debug native memory leaksThis blog post有一个使用jemalloc来调试java应用程序中本机内存泄漏的详细示例。

票数 2
EN

Stack Overflow用户

发布于 2015-11-01 02:47:13

根据我的经验,Valgrind实际上可以用于JVM,而且它仍然是查找C/C++代码中漏洞的最佳工具,即使使用JNI也是如此。所以你的问题包含了你需要的答案;)

如果您无法同时使用JNI和Valgrind,请参考Valgrind and Java

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33334126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档