我们遇到了Java进程的本机内存泄漏问题。
在许多资源(如http://www.evanjones.ca/java-native-leak-bug.html)中建议将JVM与jemalloc链接后,我们能够将根本原因归结为zlib库中的inflateInit2_和updatewindow调用。
我们如何将这些来自Native空间的调用与JVM方法相关联?我们已经尝试查看堆栈跟踪(希望获得幸运)以及Flame图表,但这些并没有多大帮助。
答案 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>