分代回收

简介: 分代回收

关于分代回收是这样的

在java8时,堆被分为了两份:新生代和老年代,它们默认空间占用比例是1:2

对于新生代,内部又被分为了三个区域。Eden区,S0区,S1区默认空间占用比例是8:1:1

具体的工作机制是有些情况:

1)当创建一个对象的时候,那么这个对象会被分配在新生代的Eden区。当Eden区要满了时候,触发YoungGC。

2)当进行YoungGC后,此时在Eden区存活的对象被移动到S0区,并且当前对象的年龄会加1,清空Eden区。

3)当再一次触发YoungGC的时候,会把Eden区中存活下来的对象和S0中的对象,移动到S1区中,这些对象的年龄会加1,清空Eden区和S0区。

4)当再一次触发YoungGC的时候,会把Eden区中存活下来的对象和S1中的对象,移动到S0区中,这些对象的年龄会加1,清空Eden区和S1区。

5)对象的年龄达到了某一个限定的值(默认15岁 ),那么这个对象就会进入到老年代中。

当然也有特殊情况,如果进入Eden区的是一个大对象,在触发YoungGC的时候,会直接存放到老年代

当老年代满了之后,触发FullGCFullGC同时回收新生代和老年代,当前只会存在一个FullGC的线程进行执行,其他的线程全部会被挂起。 我们在程序中要尽量避免FullGC的出现。

目录
相关文章
|
4月前
|
算法 Java
G1垃圾回收器
G1垃圾回收器
|
7月前
|
算法 Java
垃圾收集-垃圾收集算法
垃圾收集-垃圾收集算法
35 0
垃圾收集-垃圾收集算法
|
存储 算法 JavaScript
V8如何进行垃圾回收的
V8如何进行垃圾回收的
41 0
|
算法 Java 程序员
【垃圾回收器】
【垃圾回收器】
|
算法 小程序 Java
【垃圾回收】原来是这样!我懂了
本文主要介绍 java性能分析 之 垃圾收集
167 0
|
存储 前端开发 算法
V8 如何进行垃圾回收?
V8 如何进行垃圾回收?
100 0
|
算法 Java
详解gc(垃圾回收)机制六:分代垃圾回收
详解gc(垃圾回收)机制六:分代垃圾回收
211 0
详解gc(垃圾回收)机制六:分代垃圾回收
|
存储 算法 Oracle
17-垃圾回收器(三)
17-垃圾回收器(三)
85 0
|
算法 Java API
17-垃圾回收器(一)
17-垃圾回收器(一)
161 0
|
算法 Java UED
17-垃圾回收器(二)
17-垃圾回收器(二)
99 0