java -Xmx120m -Xms30m -Xmn10m -XX:PermSize=20m -XX:PermSize=20m -XX:+UseSerialGC -jar java2demo.jar
1). 使用jvisualvm命令
在命令行键入上述代码段,之后输入jvisualvm 命令,然后选择运行demo所在的pid即可监视相关资源使用和GC回收情况。
关于图示分析:
java -Xms30m -Xmx120m -XX:PermSize=20m -XX:MaxPermSize=30m -XX:SurvivorRatio=3 -XX:+UseSerialGC -jar java2demo.jar
-Xms30m: 设置堆大小起始为30m;
-Xmx120m: 设置堆最大为120m;
-XX:PermSize=20m:设置永久带起始大小为20m;
-XX:MaxPermSize=30m:设置永久带最大值为30m;
-XX:SurvivorRatio=3:设置Eden Generation/Survivor=3;
-XX:+UseSerialGC: 设置垃圾回收策略为简单的串行垃圾回收。
根据截图解释:
2). 通过jconsole 命令,这里不在赘述。
3). 使用jstat 命令
MacBook-Pro:~ fqyuan$ ps -eaf | grep java2demo.jar 501 6431 6097 0 10:03AM ttys000 6:21.67 java -Xms30m -Xmx120m -XX:PermSize=20m -XX:MaxPermSize=30m -XX:SurvivorRatio=3 -XX:+UseSerialGC -jar java2demo.jar 501 6611 6600 0 10:23AM ttys002 0:00.00 grep java2demo.jar
MacBook-Pro:~ fqyuan$ jstat -gc 6431 1000 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 8192.0 8192.0 0.0 0.0 24576.0 2324.6 81920.0 76028.3 25472.0 24853.2 3456.0 3264.0 50 0.292 449 52.978 53.270 8192.0 8192.0 0.0 0.0 24576.0 1301.9 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 2831.1 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 5069.4 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 8039.7 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 10764.9 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 13683.8 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 15767.2 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 17675.3 81920.0 76107.5 25472.0 24853.2 3456.0 3264.0 50 0.292 450 53.163 53.455 8192.0 8192.0 0.0 0.0 24576.0 993.8 81920.0 76822.4 25472.0 24864.9 3456.0 3265.6 50 0.292 451 53.372 53.664 8192.0 8192.0 0.0 0.0 24576.0 1028.9 81920.0 72249.2 25472.0 24864.9 3456.0 3265.6 50 0.292 452 53.594 53.886 8192.0 8192.0 0.0 0.0 24576.0 1592.3 81920.0 72267.8 25472.0 24864.9 3456.0 3265.6 50 0.292 453 53.788 54.080 8192.0 8192.0 0.0 0.0 24576.0 1674.7 81920.0 72441.0 25472.0 24864.9 3456.0 3265.6 50 0.292 454 53.969 54.261 8192.0 8192.0 0.0 0.0 24576.0 3588.5 81920.0 72441.0 25472.0 24864.9 3456.0 3265.6 50 0.292 454 53.969 54.261 8192.0 8192.0 0.0 0.0 24576.0 4908.1 81920.0 72441.0 25472.0 24864.9 3456.0 3265.6 50 0.292 455 53.969 54.261 8192.0 8192.0 0.0 0.0 24576.0 377.0 81920.0 72548.1 25472.0 24864.9 3456.0 3265.6 50 0.292 456 54.336 54.628 8192.0 8192.0 0.0 0.0 24576.0 1760.2 81920.0 72548.1 25472.0 24864.9 3456.0 3265.6 50 0.292 456 54.336 54.628 8192.0 8192.0 0.0 0.0 24576.0 3430.4 81920.0 72548.1 25472.0 24864.9 3456.0 3265.6 50 0.292 456 54.336 54.628 8192.0 8192.0 0.0 0.0 24576.0 5381.4 81920.0 72548.1 25472.0 24864.9 3456.0 3265.6 50 0.292 456 54.336 54.628
然后用jstat -gc 6431 1000;6431指代的是线程pid, 1000表示每过1000ms输出一次结果。
S0C:幸存区0的当前大小,以KB为单位。
S1C:幸存区1的当前大小,以KB为单位。
S0U:幸存区0的当前使用内存大小,以 KB为单位。
S1U:幸存区1的当前使用内存大小,以KB为单位。注意,总是有一个幸存区总是空的。
EC:Current Eden Space大小,当前伊甸区大小,以KB为单位。
EU:当前伊甸区使用的大小,以KB为单位。
OC:老年代的大小,以KB为单位。
OU:老年代内存使用情况,以KB为单位。
MC:元数据内存的大小,以KB为单位。
MU:元数据区使用大小,以KB为单位。
CCSC:Compressed class space capacity,当前压缩类空间大小,以KB为单位。
CCSU:压缩类空间使用情况,以KB为单位。
YGC:number of young generation GC events, 年轻带GC发生次数。
YGCT:Young generation collection time, 年轻带GC时间。
FGC:number of full GC events, 完全GC发生的次数。
FGCT:完全GC所用时间。
GCT:GC所用总时间。