垃圾回收统计
jstat -gcutil $pid
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 10.00 0.00 17.20 19.76 0 0.000 0 0.000 0.00
0
查看堆空间
jmap -heap $pid
Attaching to process ID 4600, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.144-b01
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 6442450944 (6144.0MB)
NewSize = 4294967296 (4096.0MB)
MaxNewSize = 4294967296 (4096.0MB)
OldSize = 2147483648 (2048.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 3221225472 (3072.0MB)
used = 322122752 (307.2001953125MB)
free = 2899102720 (2764.7998046875MB)
10.000006357828775% used
From Space:
capacity = 536870912 (512.0MB)
used = 0 (0.0MB)
free = 536870912 (512.0MB)
0.0% used
To Space:
capacity = 536870912 (512.0MB)
used = 0 (0.0MB)
free = 536870912 (512.0MB)
0.0% used
PS Old Generation
capacity = 2147483648 (2048.0MB)
used = 0 (0.0MB)
free = 2147483648 (2048.0MB)
0.0% used
6290 interned Strings occupying 486400 bytes.
调优原则
调优不仅仅是要解决oom;而是要减少gc次数和时间,特别是full gc
什么情况下需要调优?
系统响应卡顿次数频繁、系统响应时间变长
gc日志分析
2017-10-19T15:47:24.236+0800: 76438.662:
[GC (Allocation Failure) 2017-10-19T15:47:24.236+0800: 76438.662:
[ParNew: 546188K->646K(613440K), 0.0083856 secs]
648196K->102709K(3057152K),
0.0084711 secs]
[Times: user=0.04 sys=0.00, real=0.01 secs]
jstat -gcutil $pid
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 10.00 0.00 17.20 19.76 0 0.000 0 0.000 0.00
0
查看堆空间
jmap -heap $pid
Attaching to process ID 4600, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.144-b01
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 6442450944 (6144.0MB)
NewSize = 4294967296 (4096.0MB)
MaxNewSize = 4294967296 (4096.0MB)
OldSize = 2147483648 (2048.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 3221225472 (3072.0MB)
used = 322122752 (307.2001953125MB)
free = 2899102720 (2764.7998046875MB)
10.000006357828775% used
From Space:
capacity = 536870912 (512.0MB)
used = 0 (0.0MB)
free = 536870912 (512.0MB)
0.0% used
To Space:
capacity = 536870912 (512.0MB)
used = 0 (0.0MB)
free = 536870912 (512.0MB)
0.0% used
PS Old Generation
capacity = 2147483648 (2048.0MB)
used = 0 (0.0MB)
free = 2147483648 (2048.0MB)
0.0% used
6290 interned Strings occupying 486400 bytes.
调优原则
调优不仅仅是要解决oom;而是要减少gc次数和时间,特别是full gc
什么情况下需要调优?
系统响应卡顿次数频繁、系统响应时间变长
gc日志分析
2017-10-19T15:47:24.236+0800: 76438.662:
[GC (Allocation Failure) 2017-10-19T15:47:24.236+0800: 76438.662:
[ParNew: 546188K->646K(613440K), 0.0083856 secs]
648196K->102709K(3057152K),
0.0084711 secs]
[Times: user=0.04 sys=0.00, real=0.01 secs]
- 5.617(时间戳): [GC(Young GC) 5.617(时间戳): [ParNew(使用ParNew作为年轻代的垃圾回收期): 43296K(年轻代垃圾回收前的大小)->7006K(年轻代垃圾回收以后的大小)(47808K)(年轻代的总大小), 0.0136826 secs(回收时间)] 44992K(堆区垃圾回收前的大小)->8702K(堆区垃圾回收后的大小)(252608K)(堆区总大小), 0.0137904 secs(回收时间)] [Times: user=0.03(Young GC用户耗时) sys=0.00(Young GC系统耗时), real=0.02 secs(Young GC实际耗时)]