目录
分代收集
假说解释
各类收集
部分收集(Partial GC)
混合收集(Mixed GC)
整堆收集(Full GC)
分代收集
分代收集理论是应用很广泛的,当前商业虚拟机的垃圾收集器大多数都建立在这一理论之上。
说是理论,实际是符合大多数程序运行情况的经验法则。
他建立在两个假说之上:
弱分代假说:绝大多数对象是朝生夕灭的。
强分代假说:熬过越多次垃圾收集的对象就越不容易消亡。
假说解释这样看着两个假说是很抽象的,我们从垃圾收集器的设计原则去看。
有一个多款垃圾收集器设计时都一致的原则:
把Java堆划分为不同的区域;
根据对象的年龄(年龄:即熬过垃圾收集的次数)分配到不同的区域。
很显然,这一原则的出现离不开上面两个假说。结合起来看,很自然会猜到:
把朝生夕灭的放到一个区域里,熬过多次的放到另一个区域里。
根据弱分代假说,大多数对象都是朝生夕灭,所以我们在垃圾收集的时候,多多关注这一区域,将会事半功倍。
在先商用的Java虚拟机中,朝生夕灭的区域叫做新生代,另一个叫做老年代。
营运而生的就是针对不同代的各种类型的收集。
各类收集 部分收集(Partial GC)指目标不是完整收集整个Java堆的垃圾收集,其中又分为:
- 新生代收集(Minor GC/Young GC):目标只是新生代的垃圾收集。老年代收集(Major GC/Old GC):目标只是老年代的垃圾收集。这个比较少见。
指目标是收集整个新生代以及部分老年代的垃圾收集。
整堆收集(Full GC)收集整个Java堆和方法区的垃圾收集。有的地方也会叫做 Major GC 这就与老年代收集一样了,注意区分。
这里的对应英文名要记一记,经常被提起的都是什么什么GC。
好了,这一篇就到这里
早睡早起,注意身体。早起之王祝你风生水起!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)