您的位置:首页 > 编程语言 > Java开发

JAVA 的垃圾回收机制

2018-03-08 11:18 387 查看

JAVA 的垃圾回收机制

* HotSpot虚拟机 *

分代收集

在 java 堆区可以被分为 新生代(YoungGen) 和 老年代(OldGen), 新生代又细分为 Eden 空间,

From Survivor空间, 和 To Survivor 空间.



java 堆区内存图

垃圾标记: 根搜索算法

以根对象集合作为起始,按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达, 不可达说明

目标对象已经死亡.将其标记为垃圾对象



区域化分代式: G1(Garbage-Frist)收集器

将全堆扫描,改为堆内的块扫描.

初始标记:

标记 Root-Region

根区域扫描:

扫描 Root-Region 中引用的老年代的一些 Region 块(不会执行新生代内存回收,程序hang住)

并发标记:

找出整个 java 堆区中的存活对象(交叉执行新生代内存回收)

再次标记:

整个 java 堆区中存活对象标记(程序hang住)

清除:

计算活跃对象,并完全释放一些自由的Region块(程序hang住),然后处理

Remembered Set(程序hang住), 并发重置一些空闲Region块,并放回至空闲列表.

拷贝:

将存活的对象,复制到未使用过的Region块中.(程序hang住)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 垃圾回收