jstat :classloader,compiler,gc相关信息,可以时时监控资源和性能。
[root@192 /]# jstat -gc 27485 5000
Warning: Unresolved Symbol: sun.gc.generation.2.space.0.capacity substituted NaN
Warning: Unresolved Symbol: sun.gc.generation.2.space.0.used substituted NaN
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
31744.0 31744.0 30066.0 0.0 285696.0 194891.8 699392.0 473777.8 � � 93214 32880.510 3689 3887.538 36768.048
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时
堆内存 = 年轻代(young) + 年老代(old) + 永久代(permanent)
年轻代 = Eden区 + 两个Survivor区(From和To)
如下图
JDK7的PermSize,JDK8+移除了Perm引入了Metapsace
-XX:PermSize=64m -XX:MaxPermSize=64m 初始化分配一块连续的内存块,浪费
-XX:MetaspaceSize -XX:MaxMetaspaceSize 不断扩容调整
PC、PU为空的原因:jdk1.8