G1 中 region 不同区区别
G1 中 region 不同区区别
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
G1 垃圾收集器中的 Region 区域
G1(Garbage-First)垃圾收集器是一种服务器端的垃圾收集器,用于替换老旧的 CMS(Concurrent Mark-Sweep)收集器。G1 收集器旨在以高概率满足垃圾收集(GC)暂停时间目标,同时还能保持良好的吞吐量。G1 收集器通过将堆分割成多个大小相等的独立区域(Region)来实现其目标。这些区域可以分为几种类型,每种类型的区域都有其特定的用途。
Eden Region
- 用途 : Eden 区是新对象分配的地方。当对象首次创建时,它们被分配到 Eden 区。
- 特点 : 在 GC 发生时,大多数 Eden 区中的对象都会被认为是垃圾并被清除,因为大部分新生代对象都是朝生夕死的。
Survivor Region
- 用途 : Survivor 区用于存放从 Eden 区和其他 Survivor 区中幸存下来的对象。这些对象在经历了一次或多次垃圾收集后仍然存活。
- 特点 : Survivor 区有两种类型:一种是 From 区,另一种是 To 区。在垃圾收集过程中,对象会从 From 区复制到 To 区。复制完成后,From 区和 To 区的角色会互换。
Old Region
- 用途 : Old 区用于存放长时间存活的对象。当对象在 Survivor 区中存活了足够长的时间(超过了设定的阈值)后,它们就会被晋升到 Old 区。
- 特点 : Old 区中的对象通常不会像 Eden 区或 Survivor 区中的对象那样频繁地被回收,因此,当 Old 区被回收时,通常需要更长的暂停时间。
Humongous Region
- 用途 : Humongous 区用于存放非常大的对象,这些对象的大小超过了单个 Region 的一半。
- 特点 : 为了存储这些大对象,G1 会将连续的 Region 组合起来形成一个足够大的区域。这些区域的回收通常会在 Full GC 中处理。
空闲 Region
- 用途 : 空闲区是指那些当前没有被使用的 Region。
- 特点 : 这些区域可以被视为资源池,用于未来的对象分配或者在 GC 过程中作为 To 区。
总结
G1 垃圾收集器通过将堆内存划分为多个 Region,可以更灵活地管理内存,减少 GC 暂停时间,并提高应用程序的性能。每种类型的 Region 都有其特定的角色和特点,这有助于 G1 实现其目标,即在保持高吞吐量的同时,尽可能地减少 GC 暂停时间。