Java 了解Jeprofile输出
根据这里的描述,我能够生成如下的Jeprofile输出 请查找jemalloc输出和图表Java 了解Jeprofile输出,java,memory-leaks,jvm,java-native-interface,jemalloc,Java,Memory Leaks,Jvm,Java Native Interface,Jemalloc,根据这里的描述,我能够生成如下的Jeprofile输出 请查找jemalloc输出和图表 > Using local file /bin/java. Using local file jeprof.57473.0.f.heap. > Total: 79372091 B 78084060 98.4% 98.4% 78084060 98.4% > je_prof_backtrace 1288031 1.6% 100.0% 1474342 1.9% > Jav
> Using local file /bin/java. Using local file jeprof.57473.0.f.heap.
> Total: 79372091 B 78084060 98.4% 98.4% 78084060 98.4%
> je_prof_backtrace 1288031 1.6% 100.0% 1474342 1.9%
> Java_java_util_zip_ZipFile_getZipMessage
> 0 0.0% 100.0% 6889972 8.7% 0x00007f3d5ebac3e6
> 0 0.0% 100.0% 270421 0.3% 0x00007f3d5ebb8a79
> 0 0.0% 100.0% 727762 0.9% 0x00007f3d5ebb8a87
> 0 0.0% 100.0% 589239 0.7% 0x00007f3d5ebb9ab2
> 0 0.0% 100.0% 854269 1.1% 0x00007f3d5ebb9ac0
> 0 0.0% 100.0% 270421 0.3% 0x00007f3d5ebb9cb7
> 0 0.0% 100.0% 135210 0.2% 0x00007f3d5ebbc5fa
> 0 0.0% 100.0% 135210 0.2% 0x00007f3d5ebbc768
> 0 0.0% 100.0% 135210 0.2% 0x00007f3d5ee57146
> 0 0.0% 100.0% 143743 0.2% 0x00007f3d5ee8bc25
> 0 0.0% 100.0% 444413 0.6% 0x00007f3d5ef13945
> 0 0.0% 100.0% 136258 0.2% 0x00007f3d5ef764fb
> 0 0.0% 100.0% 8463202 10.7% 0x00007f3d5efbdb8a
> 0 0.0% 100.0% 143743 0.2% 0x00007f3d5f220c67
> 0 0.0% 100.0% 135210 0.2% 0x00007f3d5f3a5c65
> 0 0.0% 100.0% 55473738 69.9% AsyncGetCallTrace
> 0 0.0% 100.0% 48103708 60.6% JLI_GetStdArgc
> 0 0.0% 100.0% 48103708 60.6% JNI_CreateJavaVM
> 0 0.0% 100.0% 11897251 15.0% JNI_GetCreatedJavaVMs
> 0 0.0% 100.0% 11897251 15.0% JVM_DefineClassWithSource
> 0 0.0% 100.0% 271469 0.3% JVM_FindClassFromBootLoader
> 0 0.0% 100.0% 431486 0.5% JVM_FindClassFromCaller
> 0 0.0% 100.0% 131120 0.2% JVM_FindLoadedClass
> 0 0.0% 100.0% 76994237 97.0% JVM_FindSignal
> 0 0.0% 100.0% 148137 0.2% JVM_GetCPMethodClassNameUTF
> 0 0.0% 100.0% 148137 0.2% JVM_GetCPMethodSignatureUTF
> 0 0.0% 100.0% 135210 0.2% JVM_GetClassDeclaredFields
> 0 0.0% 100.0% 405631 0.5% JVM_GetClassName
> 0 0.0% 100.0% 143743 0.2% JVM_IHashCode
> 0 0.0% 100.0% 143743 0.2% JVM_MonitorWait
> 0 0.0% 100.0% 431486 0.5% JVM_RawMonitorExit
> 0 0.0% 100.0% 659324 0.8% JVM_StartThread
> 0 0.0% 100.0% 77220036 97.3% JVM_handle_linux_signal
> 0 0.0% 100.0% 11897251 15.0% Java_java_lang_ClassLoader_defineClass1
> 0 0.0% 100.0% 271469 0.3% Java_java_lang_ClassLoader_findBootstrapClass
> 0 0.0% 100.0% 431486 0.5% Java_java_lang_Class_forName0
> 0 0.0% 100.0% 592551 0.7% Java_java_util_zip_Inflater_inflateBytes
> 0 0.0% 100.0% 134688 0.2% Java_java_util_zip_Inflater_init
> 0 0.0% 100.0% 1117359 1.4% Java_java_util_zip_ZipFile_open
> 0 0.0% 100.0% 75438262 95.0% SUNWprivate_1.1
> 0 0.0% 100.0% 296275 0.4% VerifyClassForMajorVersion
> 0 0.0% 100.0% 356982 0.4% ZIP_Open
> 0 0.0% 100.0% 1474342 1.9% ZIP_Unlock
> 0 0.0% 100.0% 176271 0.2% _GLOBAL__sub_I_eh_alloc.cc
> 0 0.0% 100.0% 176271 0.2% _GLOBAL__sub_I_eh_alloc.cc (inline)
> 0 0.0% 100.0% 59721527 75.2% __clone
> 0 0.0% 100.0% 176271 0.2% __static_initialization_and_destruction_0 (inline)
> 0 0.0% 100.0% 176271 0.2% _dl_init_internal
> 0 0.0% 100.0% 176271 0.2% _dl_start_user
> 0 0.0% 100.0% 131184 0.2% fork1
> 0 0.0% 100.0% 78084060 98.4% imalloc (inline)
> 0 0.0% 100.0% 78084060 98.4% imalloc_body (inline)
> 0 0.0% 100.0% 592551 0.7% inflate
> 0 0.0% 100.0% 592551 0.7% inflateBackEnd
> 0 0.0% 100.0% 134688 0.2% inflateInit2_
> 0 0.0% 100.0% 78084060 98.4% je_malloc_default
> 0 0.0% 100.0% 78084060 98.4% prof_alloc_prep (inline)
> 0 0.0% 100.0% 59721527 75.2% start_thread
图表也附在后面
需要一些帮助来了解问题所在
环境是:
Centos 7
Java 1.8.0
GCC 9
谢谢!
JVM\u FindSignal
占分配的97%。这不可能是真的,因为JVM\u FindSignal
不分配任何东西
这一定是问题的结果。使用中描述的JDK调试符号安装软件包,或使用带有内置调试符号的JDK,例如jemalloc
对Java方法一无所知。它无法将JIT编译代码中的地址转换为Java方法名称。因此,jemalloc输出中有很多地址(十六进制数)
有一个Java分析器,它可以将本机内存分配跟踪到Java代码,并将Java堆栈跟踪显示为Flame图。使用异步探查器分析malloc
、mprotect
和mmap
调用有助于查找本机内存泄漏。有关详细信息,请参阅
下面是一个使用jemalloc和async profiler分析本机分配的示例JVM\u FindSignal
占分配的97%。这不可能是真的,因为JVM\u FindSignal
不分配任何东西
这一定是问题的结果。使用中描述的JDK调试符号安装软件包,或使用带有内置调试符号的JDK,例如jemalloc
对Java方法一无所知。它无法将JIT编译代码中的地址转换为Java方法名称。因此,jemalloc输出中有很多地址(十六进制数)
有一个Java分析器,它可以将本机内存分配跟踪到Java代码,并将Java堆栈跟踪显示为Flame图。使用异步探查器分析malloc
、mprotect
和mmap
调用有助于查找本机内存泄漏。有关详细信息,请参阅
下面是一个使用jemalloc和async profiler分析本机分配的示例利比里亚解决了这个问题。我给出了完整的图表。谢谢阿潘金!它救了我一天!利比里亚解决了这个问题。我给出了完整的图表。谢谢阿潘金!它救了我一天!