将本机函数调用与Java方法

时间:2018-04-30 19:39:20

标签: java jvm native

我们遇到了Java进程的本机内存泄漏问题。

在许多资源(如http://www.evanjones.ca/java-native-leak-bug.html)中建议将JVM与jemalloc链接后,我们能够将根本原因归结为zlib库中的inflateInit2_和updatewindow调用。

我们如何将这些来自Native空间的调用与JVM方法相关联?我们已经尝试查看堆栈跟踪(希望获得幸运)以及Flame图表,但这些并没有多大帮助。

1 个答案:

答案 0 :(得分:2)

ZipInputStream / JarInputStream是此类内存泄漏的典型来源,例如,Class.getResourceAsStream在使用后未关闭。

创建堆转储以查看谁拥有java.util.zip.Inflater个对象。

async-profiler最近获得了对在Linux上分析本机内存泄漏的支持。以下命令将分析<SEC>秒的本机分配,并将报告创建为包含组合Java +本机堆栈的FlameGraph:

./profiler.sh -e malloc -d <SEC> -o malloc.svg <PID>