欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!
后续文章将首发此专栏!
欢迎各位Java工程师朋友投稿和关注
JVM内存分析命令
工欲善其事,必先利其器!JVM本身和开源界提供了很多丰富的方法和工具来帮助开发者查看和分析JVM内存状况。通过这些分析,可以排查程序中内存问题及调优程序的性能。下面介绍几个常用的命令工具。
测试环境:
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
一、jps:虚拟机进程状况工具(常用)java process status(jps) 用于查看正在运行的java程序的状态
# 用法
$ jps [ options ] [ hostid ]
jps -m (常用)显示主函数输入的参数
jps -l (常用)显示应用程序主类完整/全限定包类名或jar完整名称
jps -v (常用)列出程序启动时的jvm参数
jps -V 输出通过.hotsportrc或-XX:Flags=指定的jvm参数
二、jstat:虚拟机统计信息监视工具jstat是jvm statistics 的缩写
用法
$ jstat [ option lvmid [ interval[s|ms] [count] ] ]
类加载统计:
$ jstat -class 7658
Loaded Bytes Unloaded Bytes Time
10381 19456.3 80 117.8 6.71Loaded:已加载的class数量
Bytes:已加载所占用空间大小
Unloaded:未加载的class数量
Bytes:未加载所占用空间大小
Time:加载所用时间
常用的统计命令:
$ jstat -gcutil 7658 5s 2
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
62.50 0.00 67.59 46.13 98.26 97.07 10662 36.514 3 0.286 36.800
62.50 0.00 73.00 46.13 98.26 97.07 10662 36.514 3 0.286 36.800S0、S1:分别表示新生代的两个Survivor区
E :Eden区使用占比
O:老年代使用占比
M:元数据空间使用占比
CCS:压缩使用占比
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT