将本机函数调用与 Java 方法关联

问题描述 投票:0回答:2

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

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

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

java jvm native
2个回答
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>

0
投票

@rmenon,我们也面临着类似的问题。那么您能否提供有关如何“解压所有 JAR”的详细信息?以编程方式还是通过任何其他选项?

© www.soinside.com 2019 - 2024. All rights reserved.