Memory leaks jemalloc生成许多文件
我按照说明在centOS 7上安装了jemalloc。然而,在设定后不久Memory leaks jemalloc生成许多文件,memory-leaks,jvm,java-native-interface,centos7,jemalloc,Memory Leaks,Jvm,Java Native Interface,Centos7,Jemalloc,我按照说明在centOS 7上安装了jemalloc。然而,在设定后不久 export LD_PRELOAD=/usr/local/lib/libjemalloc.so export MALLOC_CONF=prof_leak:true,lg_prof_sample:50,lg_prof_interval:62,prof_final:true 环境变量,我可以看到许多jeprof.*.heap文件被写入我的当前目录。我根本没有启动jetty服务器,但是生成了这么多文件。是哪个过程生成的 当我尝
export LD_PRELOAD=/usr/local/lib/libjemalloc.so
export MALLOC_CONF=prof_leak:true,lg_prof_sample:50,lg_prof_interval:62,prof_final:true
环境变量,我可以看到许多jeprof.*.heap文件被写入我的当前目录。我根本没有启动jetty服务器,但是生成了这么多文件。是哪个过程生成的
当我尝试启动应用程序时,如下所示
$LD_PRELOAD $MALLOC_CONF $JAVA_HOME/java/ Test
它导致了分段错误,但开始连续写入许多文件
我试着打开一堆像这样的东西
jeprof --show_bytes `which w` jeprof.47757.0.f.heap
top
这给了我0个字节。试图生成gif文件,即使该文件为空。
我怎样才能解决这个问题
@阿潘金
在你的帮助下,如帖子所述
我能够得到以下细节
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
但我在.so文件中没有看到任何JNI类名。我可以看到许多内存地址。我是否遗漏了什么或符号没有正确解析
谢谢
Raj当您导出
LD_PRELOAD
环境变量时,jemalloc库将加载到您运行的每个进程中,包括每个bash命令
如果只想将其应用于Java进程,请使用
LD_PRELOAD=/usr/local/lib/libjemalloc.so $JAVA_HOME/bin/java Test
i、 e.在java命令之前设置变量(不带导出)。当您导出
LD_PRELOAD
环境变量时,jemalloc库将加载到您运行的每个进程中,包括每个bash命令
如果只想将其应用于Java进程,请使用
LD_PRELOAD=/usr/local/lib/libjemalloc.so $JAVA_HOME/bin/java Test
i、 e.在java命令之前设置变量(不带导出)。Ok谢谢,这解决了多文件生成问题,但现在得到了错误“libjemalloc.so[55499]:libjemalloc.so.2[5619755ea000+b1000]中6546 ip 000000000000 6546 sp 00007ffc5a87bcc8错误14的segfault”@Raj您正试图将
libjemalloc.so
共享库作为可执行文件运行。这是错误的。取消设置LD_PRELOAD
,然后像上面所示运行Java命令。感谢apangin,我能够获得跟踪,并在上面的原始帖子中对其进行了更新。除了一些内存地址外,我没有看到任何类名。谢谢,这解决了多文件生成问题,但是现在得到了这个错误“libjemalloc.so[55499]:segfault at 6546 ip 0000000000006546 sp 00007ffc5a87bcc8 error 14 in libjemalloc.so.2[5619755ea000+b1000]”@Raj您正试图将libjemalloc.so
共享库作为可执行文件运行。这是错误的。取消设置LD_PRELOAD
,然后像上面显示的那样运行Java命令。感谢apangin,我能够获得跟踪,并在上面的原始帖子中对其进行了更新。除了一些内存地址,我看不到我的任何类名