热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

Garbage First 收集器 (G1)

zhiliaoadmin
2021-03-05 13:57:25
0

Garbage First 收集器 (G1)

G1 不在坚持固定大小以及固定数量的分代区域划分, 而是把连续的 Java 堆分成了多个大小相等的独立区域 ( region ),每一个 region 都可以根据需要, 扮演新生代的 Eden Survivor空间 或者 老年代空间 . 收集器根据对扮演不同角色的 Region 采用不同的策略去处理 . Region 中还有一类特殊的 Humongous 区域, 专门用来存储大对象 . G1 认为只要超过 region 的一半即可判断为大对象 .

虽然 G1 保留了新生代 和老年代的概念, 但是新生代和 老年代不再是固定的了.他们都是一系列区域(不需要连续)的动态集合

四个步骤 :

  1. 初始标记 标记 GC Roots 直接关联的对象

  2. 并发标记 扫描整个堆的对象图, 找到要回收的对象

  3. 最终标记 短暂的暂停, 处理并发标记后仍遗留下来的最后那少量的 STAB 记录

  4. 筛选回收 负责更新Region的统计数据, 对各个 Region 的回收价值和成本进行排序 . 必须暂停用户线程

Java 基础知识 Java 基础知识疑难点/易错点

{xunruicms_img_title}

实战 : 内存分配与回收策略

大多数情况下, 对象在新生代 Eden区中分配 . 当 Eden 中没有足够的空间进行分配时, 虚拟机会发起一次 Minor GC

大对象就只是需要大量连续内存空间的 Java 对象, 大对象直接进入 老年代.

长期存活的对象将进入老年代 ( 15 )

Survivor 空间中相同年龄所有对象大小的总和大于 Survivor 空间的一半, 年龄大于或等于该年龄的对象直接进入永久代


大家都在看

哈希算法的作用有哪些?哈希算法的原理详解

2021-03-05 浏览次数:0

知了汇智携手20余所高校开展实习实训,助力数字化...

2021-03-05 浏览次数:0

成都Java培训之Curator框架实现分布式锁

2021-03-05 浏览次数:0

网络安全难学吗?前景怎么样?

2021-03-05 浏览次数:0

代码审计需要什么基础?代码审计岗位简述

2021-03-05 浏览次数:0

什么是动态测试?软件测试动态测试包括什么方法?

2021-03-05 浏览次数:0
最新资讯