JVM工具

jps -lvm 查看进程id

jinfo 【查看进程jvm参数】

  • jinfo -flags pid
  • 可以修改jvm参数

    jstat查看程序内存实时gc情况【可看回收情况】【可查看每秒新生代、老年代增加情况】

    **
    gcutil和gc的区别:
    image.png

    jmap 看堆统计信息

    jvm 性能调优工具之 jmap - 简书
    jmap -heap 进程id
    JVM工具 - 图2

    jmap查看进程【对象】占用内存

    jmap -histo pid
    JVM工具 - 图3
    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

mat工具分析dump

jstack导出信息(线程信息),并分析

jstack是用于调试线程间的关系,解决阻塞,锁等问题

jstack -l pid >> test.txt

  • -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况

https://fastthread.io/ft-index.jsp 分析堆栈网站
image.png
可以根据top找出cpu占用高的进程id,再从stack中找到执行的方法。

GC日志/线程dump/堆dump 可视化工具

image.png

JVM参数分析工具

开源工具

字节码工具

  • javap
    • image.png
  • jclasslib:图形化工具