jvm GC 垃圾收集 分代收集理论 简介(十)
分代理论基于两个假说:弱分代假说:大多数对象都在年轻时死亡;
强分代假说:对象越老越不容易死;
跨分代假说:跨代引用是极少数;
这是理论研究与实践的产出物,尽管部分还存在争议。
年轻与年老的判别依据是年龄,而分代垃圾收集理论中的年龄就是躲过了几次垃圾收集,这样统计比较方便。
年轻代与老年代有不同的特征,必然是适用于不同的算法,所以通常都是划分成为多个空间,针对不同的空间进行垃圾回收。
分代收集的主要关注点
!(data/attachment/forum/202211/15/165738vwzwqw4a5qmaa64a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
### 内存划分
区域分为:
`Eden`、`Survivor0`、`Survivor1`、`Old`
!(data/attachment/forum/202211/15/171748w2bblssggi2bie1g.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
通过`jstat`命令可以间接验证
```bash
#4093 是java进程
root@ecs-master:/usr/local/java/jdk1.8.0_333/bin# jstat -gc 4093
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1536.0 1536.00.0 1178.2 259072.0 30539.5 262144.0 155371.381536.0 77754.4 10112.0 9494.5 2817 20.080 3 0.432 20.512
```
```html
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
```
页:
[1]