Valgrind和Java
我想使用Valgrind 3.7.0来查找我的
Java本机代码中的内存泄漏.我正在使用jdk1.6.0._29.
为此,我必须设置–trace-children = yes标志.设置该标志,我不再可以在任何java应用程序上运行valgrind,甚至可以像以下命令: valgrind --trace-children=yes --smc-check=all java -version 将收到错误消息: Error occurred during initialization of VM Unknown x64 processor: SSE2 not supported 我看过这个链接:https://bugs.kde.org/show_bug.cgi?id=249943,但没有用. 运行程序没有Valgrind或没有–trace-children标志是罚款. 有人有什么想法可以做什么? 解决方法
您必须禁用JIT在valgrind下运行JVM,如下所示:
valgrind java -Djava.compiler=NONE ... 另外,如果最终使用生成的抑制(而且很有可能会这样!),则生成的抑制的调用堆栈的深度可能会出现问题,这在JVM下运行时更有可能发生. 在最近版本的valgrind中,生成的抑制可以包含比由valgrind / memcheck本身处理的更深层次的调用堆栈.这个问题的症状是valgrind意外终止,消息“堆栈跟踪中的调用者太多”. 这个问题很容易修复:在构建valgrind之前,编辑文件coregrind / m_errormgr.c并将#define中的硬编码值更改为更大的值(我使用99): / *抑制中上下文的最大呼叫者数. * / #define VG_MAX_SUPP_CALLERS 99 然后根据文档构建和安装valgrind. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |