一、JVM常用命令
jps:查看当前执行的所有 JAVA 进程
jinfo: 实时查看 JVM 参数
jinfo -flag InitialHeapSize PID:JAVA 进程堆内存大小 24
jinfo -flag UseG1GC PID:JAVA 进程是否使用 G1GC
jinfo -flag UseParallelGC PID:JAVA 进程是否使用 ParallelGC
jstat:虚拟机性能信息
jstat -class PID 1000:每秒查看一次虚拟机中类加载信息
jmap:打印快照
jmap -heap PID:查看堆存储快照
jmap -dump:format=b,file=heap.hprof PID:在出现内存溢出异常时,将堆内存的信息下载到文件中
二、JVM常用工具
(1)JVM堆内存文件查看工具
MemoryAnalyzer(Mat)
主页面
一般情况下,我们会让项目在发生 OOM 异常时自动下载堆内存信息,进行错误的排查。此时我们需要给 JVM 配置如下代码:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
运行后会产生heap.hprof文件,普通软件打开会乱码,用上面的wat打开即可,就可以追踪到造成异常的原因
(2)垃圾收集器 log 文件查看工具:
如果我们要进行垃圾回收调优,首先需要将 GC 信息打印出来,此时我们需要给 JVM配置如下代码:
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc:gc.log
GCViewer
运行 GCViewer:输入命令 java -jar gcviewer-1.36-SNAPSHOT.jar
就会出现一下窗口,打开生成的gc.log文件(查看决定性能的两个因素:吞吐量和暂停时间)
三、G1GC调优