定位内存泄漏的根源

java程序在运行过程中如果报出OutOfMemory异常,或者是分配内存不够,或者是程序有内存泄漏的bug,本文通过gdb和MAT(Eclipse Memory Analyzer Tool)工具来定位问题根源。

参考文章: http://blogs.atlassian.com/2013/03/so-you-want-your-jvms-heap/

  1. 使用gdb生成java heap文件

    • 生成进程core文件
    sudo gdb --pid=16837
         ...bunch of info...
    (gdb) gcore /tmp/jvm.core
         Saved corefile /tmp/jvm.core
    (gdb) detach
    (gdb) quit
    
    • 从进程core文件中提取出java heap文件

    sudo jmap -dump:format=b,file=/tmp/jvm.hprof /usr/bin/java(要改成你自己主机上java的路径) /tmp/jvm.core

  2. 运行MAT找出内存泄漏根源

results matching ""

    No results matching ""