学习JVM之垃圾收集03——垃圾收集算法之分代收集理论

学习JVM之垃圾收集03——垃圾收集算法之分代收集理论,第1张

学习JVM之垃圾收集03——垃圾收集算法之分代收集理论

目录

分代收集

假说解释

各类收集

部分收集(Partial GC)

混合收集(Mixed GC)

整堆收集(Full GC)


分代收集

分代收集理论是应用很广泛的,当前商业虚拟机的垃圾收集器大多数都建立在这一理论之上。

说是理论,实际是符合大多数程序运行情况的经验法则。

他建立在两个假说之上:

弱分代假说:绝大多数对象是朝生夕灭的。

强分代假说:熬过越多次垃圾收集的对象就越不容易消亡。

假说解释

这样看着两个假说是很抽象的,我们从垃圾收集器的设计原则去看。

有一个多款垃圾收集器设计时都一致的原则:

把Java堆划分为不同的区域;

根据对象的年龄(年龄:即熬过垃圾收集的次数)分配到不同的区域。

很显然,这一原则的出现离不开上面两个假说。结合起来看,很自然会猜到:

把朝生夕灭的放到一个区域里,熬过多次的放到另一个区域里。

根据弱分代假说,大多数对象都是朝生夕灭,所以我们在垃圾收集的时候,多多关注这一区域,将会事半功倍。

在先商用的Java虚拟机中,朝生夕灭的区域叫做新生代,另一个叫做老年代。

营运而生的就是针对不同代的各种类型的收集。

各类收集 部分收集(Partial GC)

指目标不是完整收集整个Java堆的垃圾收集,其中又分为:

    新生代收集(Minor GC/Young GC):目标只是新生代的垃圾收集。老年代收集(Major GC/Old GC):目标只是老年代的垃圾收集。这个比较少见。
混合收集(Mixed GC)

指目标是收集整个新生代以及部分老年代的垃圾收集。

整堆收集(Full GC)

收集整个Java堆和方法区的垃圾收集。有的地方也会叫做 Major GC 这就与老年代收集一样了,注意区分。

这里的对应英文名要记一记,经常被提起的都是什么什么GC。

好了,这一篇就到这里

早睡早起,注意身体。早起之王祝你风生水起!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5710115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存