我们遇到了 Java 进程的本机内存泄漏问题。
按照众多资源(如(http://www.evanjones.ca/java-native-leak-bug.html)中的建议将 JVM 与 jemalloc 链接起来后,我们能够将根本原因归结为 inflateInit2_ 和 updatewindow 调用)在 zlib 库中。
我们如何将这些从 Native 空间的调用关联到 JVM 方法?我们已经尝试查看堆栈跟踪(希望幸运)以及火焰图,但这些并没有多大帮助。
ZipInputStream
/ JarInputStream
是此类内存泄漏的典型来源,例如,当 Class.getResourceAsStream
在使用后未关闭时。
创建堆转储以查看谁持有
java.util.zip.Inflater
对象。
async-profiler
最近获得了对 Linux 上本机内存泄漏分析的支持。以下命令将分析本机分配 <SEC>
秒,并创建一个包含 Java+本机堆栈组合的 FlameGraph 报告:
./profiler.sh -e malloc -d <SEC> -o malloc.svg <PID>
@rmenon,我们也面临着类似的问题。那么您能否提供有关如何“解压所有 JAR”的详细信息?以编程方式还是通过任何其他选项?