垃圾回收器都有那些?
单线程垃圾回收器:Serial、Serial Old
多线程垃圾回收器:ParNew、Parallel、Parallel Old
并发垃圾回收器:CMS,G1
你最了解那一款垃圾回收器
都知道一点吧,比如说单线程的Serial、SerialOld,适合用在一些单核的CPU中,比如说一些嵌入式
然后ParNew的话是一个独立的年轻代的垃圾回收器,是第一款多线程的垃圾回收器,是Serial的多线程的的版本
随后就是 Parallel 是JDK8中的默认的垃圾的回收器,以吞吐量优先的的垃圾回收器
再然后就是CMS,这是在JDK 1.5的时候推出的划时代的并发回收器,第一次实现了垃圾收集线程和用户线程同时的工作。关注点在于如何更好的停顿时间,在一些服务器端会带来更好的体验
随后就是在JDK1.7的u4版本中可用的G1垃圾回收器,以良好的吞吐量为优先,目标是在低延迟的情况下得到更好的吞吐量,担任的全功能的垃圾回收期
你了解CMS的垃圾回收算法吗?
CMS是一个并发的垃圾回收器,所以说,大概有以下这几个过程
那G1的垃圾回收算法呢
G1垃圾回收是基于Region分区的,它把整个堆在逻辑上拆分成了老年代、年轻代,随后避免全堆的收集,有一个可以遇见的时间模型,根据一个优先的列表在运行收集的时间内。优先回收价值比较大的Region,所以说也就叫垃圾优先,G first。
他的垃圾回收主要分为
年轻代的GC主要有
并发标记的过程有
Full GC
如果上述的垃圾算法都无法满足,那么就会触发Full GC,Full GC 会造成长时间的程序停顿