请选择 进入手机版 | 继续访问电脑版

[JVM] jvm GC 垃圾收集 分代收集理论 简介(十)

编程语言 编程语言 1442 人阅读 | 0 人回复

分代理论基于两个假说:

弱分代假说:大多数对象都在年轻时死亡;

强分代假说:对象越老越不容易死;

跨分代假说:跨代引用是极少数;

这是理论研究与实践的产出物,尽管部分还存在争议。

年轻与年老的判别依据是年龄,而分代垃圾收集理论中的年龄就是躲过了几次垃圾收集,这样统计比较方便。

年轻代与老年代有不同的特征,必然是适用于不同的算法,所以通常都是划分成为多个空间,针对不同的空间进行垃圾回收。

分代收集的主要关注点

image.png

内存划分

区域分为:

EdenSurvivor0Survivor1Old

image.png

通过jstat命令可以间接验证

#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.0  0.0   1178.2 259072.0 30539.5   262144.0   155371.3  81536.0 77754.4 10112.0 9494.5   2817   20.080   3      0.432   20.512
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
关注下面的标签,发现更多相似文章
    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
java 解析modbus 协议 Modbus4j应用 使用mo
[md]本文记录使用java开发modbus协议程序,与串口进行连接,使用