java
jdk 工具
# show
jps -lm # 查看启动的java进程和main方法路径(jar包路径)
# dump
jmap -dump:format=b,file=/tmp/20414dump.dump 1000
jmap -histo:live 1000 | more # 找到最耗内存的对象
jmap -histo 1000 | head -20 # 查看内存对象大小
jmap -heap pid # 查看进程堆内存使用情况
# 线程快照
jstack -l 5402 # 捕获线程快照,获取线程状态
# GC
jstat -gcutil 1 1000 300 # 间隔1秒, 输出300次jar 包
jar -xvf app.jar # 解压 jar 包
# 打包 jar 包 - 把当前目录下的所有文件打包成 app.jar
jar -cvfM0 app.jar ./综合
nohup java -jar xxx-xxx-1.0.0.jar --spring.profiles.active=prod &性能排查
- 定位进程
- 定位线程
- 捕获堆栈
# 显示进程运行信息列表,会显示出进程的参数, 然后 P 按CPU 排序
top -c
# 通过进程 PID,查询线程列表,按 P CPU使用率排序
top -Hp 44846
# 先将 线程号转为 16 进制, 因为堆栈里, 线程 id 是用 16 进制表示的
printf "%x\n" 168934 => 293e6
# 捕获线程堆栈
jstack 10765 | grep '293e6' -C5 --coloros 工具
# 捕获堆栈
pstack 77338最后更新于