JVM工具
jinfo 【查看进程jvm参数】
- jinfo -flags pid
- 可以修改jvm参数
jstat查看程序内存实时gc情况【可看回收情况】【可查看每秒新生代、老年代增加情况】
**
gcutil和gc的区别:
jmap 看堆统计信息
jvm 性能调优工具之 jmap - 简书
jmap -heap 进程id
jmap查看进程【对象】占用内存
jmap -histo pid
jmap -histo:live pid > jmap_info.txt 可以导出jvm下存活的堆内存信息jmap 【dump】出进程堆信息
耗时,正常的生产环境慎用
jmap -dump:format=b,file=dump.dat pid
jmap -dump是输出堆中所有对象 jmap -dump:live是输出堆中所有活着的对象 而且jmap -dump:live会触发gc 线上使用要注意这个
Dumps the Java heap in hprof binary format to filename
用jhat查看dump文件
jhat 【分析dump】堆信息
jhat -port 8888 dump.dat
jstack导出栈信息(线程信息),并分析
jstack是用于调试线程间的关系,解决阻塞,锁等问题
jstack -l pid >> test.txt
- -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
https://fastthread.io/ft-index.jsp 分析堆栈网站
可以根据top找出cpu占用高的进程id,再从stack中找到执行的方法。
GC日志/线程dump/堆dump 可视化工具
JVM参数分析工具
字节码工具
- javap
- jclasslib:图形化工具