写了好一段时间的JVM收集器,尤其是G1,看着网上各种复制来复制去的资料,甚至有一些还给出了错误的结论,真的有些心力交瘁,最终还是参考了Oracle官网的结论,打算过段时间再回到JVM分区及垃圾回收的主线上。
时隔两年多才再回来填这个坑。
jps: 虚拟机进程状况工具:
jps [opetions]
查询正在运行的虚拟机进程。并显示虚拟机执行的主类(Main Class,main()函数所在的类)名称一级这些进程的本地虚拟机唯一ID。
jstat: 虚拟机统计信息监视工具:
用于监视虚拟机各种运行状态信息的命令执行工具。他可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾手机、即时编译等运行时数据。
jstat [options 进程id interval s/ms count] interval和count分别表查询间隔和次数,如果省略这2个参数,说明只查询一次。
eg: jstat -gcutil 10594 250 20
E:伊甸园区使用比例,S0、S1分别表示S0:幸存0区当前使用比例和幸存1区当前使用比例,O:老年代使用比例,M:元数据区使用比例,CCS:压缩使用比例,YGC:年轻代垃圾回收次数,FGC:老年代垃圾回收次数,FGCT:老年代垃圾回收消耗时间,GCT:垃圾回收消耗总时间。

jinfo: java配置信息工具:
实时查看和调整虚拟机各项参数
jinfo [option] pid
jmap: 内存映像工具:
用于生成堆转储快照(dump文件),当然也可以通过设置 -XX:+HeadDumpOnOutOfMemoryError参数,来让虚拟机在发生内存溢出的时候生成快照。jmap也可以用来查询堆或者方法区使用的垃圾收集器。
jmap [option] pid
eg: jmap -dump:format=b,file=/dump.bin 10594

jstack: java堆栈跟踪工具:
用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间思索、死循环、请求外部资源导致的长时间挂起,都是导致线程长时间停顿的常见原因。
jstack [optoini] pid
常用命令汇总::
