怎么获取 dump 文件?怎么分析?

1 个回答

  • 粑粑
    自己喜欢的东西,就不要问别人好不好。
    1.启动时配置,出现OOM问题时自动生成 JVM启动时增加两个参数: ```java //出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError //生成堆文件地址: -XX:HeapDumpPath=/home/liuke/jvmlogs/ ``` 2.执行jmap命令立即生成 发现程序异常前通过执行指令,直接生成当前JVM的dmp文件,6214是指JVM的进程号 ```java jmap -dump:format=b,file=/home/admin/logs/heap.hprof 6214 ``` 获得heap.hprof以后,执行jvisualvm命令打开使用Java自带的工具Java VisualVM来打开heap.hprof文件,就可以分析你的Java线程里面对象占用堆内存的情况了 由于第一种方式是一种事后方式,需要等待当前JVM出现问题后才能生成dmp文件,实时性不高,第二种方式在执行时,JVM是暂停服务的,所以对线上的运行会产生影响。所以建议第一种方式。
    发布于 2022-02-22 10:50 •IP属地 河北
    举报
    评论
    收藏