如何 dump jvm 内存及线程栈

1. dump jvm 内存

命令格式:

jmap -dump:format=b,file=dump_file_name pid

jmap -dump:live,format=b,file=heap.hprof 27019

举例:dump pid 为 3239 的 java 进程的内存到 aa.txt 文件

jmap -F -dump:format=b,file=aa.txt 3239

2. dump jvm 线程栈
命令格式:

jstack pid > dump_file_name

举例:dump pid 为 3239 的 java 进程的线程栈到 bb.txt 文件

jstack  -F 3239 > bb.txt

 

说明:-F 代表强制

 3.jstat:用于输出java程序内存使用情况,包括新生代、老年代、元数据区容量、垃圾回收情况。

 jstat -gcutil 27019 2000 5 代表 每2000毫秒输出一次进程id为21019服务的内存使用情况,共输出5次。其意义为:

  • S0:幸存1区当前使用比例
  • S1:幸存2区当前使用比例
  • E:伊甸园区使用比例
  • O:老年代使用比例
  • M:元数据区使用比例
  • CCS:压缩使用比例
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

实际问题分析:内存问题还是线程问题。

top -p pid 查看该服务的内存和cpu使用情况

jstack pid > dump_file_name 导出线程文件,分析线程情况。

一般分析步骤:

 

jps 获取pid

top -Hp pid 查看最消耗cpu的线程

printf “%x\n” tid  得到16进制的线程id

jstack pid | grep tid(16进制) 查看最消耗cpu的线程的方法。

jstat –gcutil pid  详解查看一下链接:

https://blog.csdn.net/zhaozheng7758/article/details/8623549

 

转载自:https://blog.csdn.net/qianghaohao/article/details/80379118

https://www.cnblogs.com/leefreeman/p/7464179.html 

转载于:https://www.cnblogs.com/bfyq/p/10716980.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值