订阅《专栏合集》,解锁所有文章。
垃圾收集器的分类
JAVA的垃圾收集器没有在JVM规范中做过多的限制,可以由不同厂商、不同种类的JVM自行实现。
伴随着JDK的高速迭代,JAVA语言发展至今,已经拥有了众多的性能出色的垃圾收集器。可以简单地做个分类归纳。
1)按照线程数分类
-
串行垃圾收集器
同一时段内,只允许有一个CPU用于执行垃圾回收线程,此时应用程序的工作线程被暂停,直到垃圾收集工作完成。
在一些单CPU及应用内存较小的硬件平台上,串行收集器的性能甚至会超越并行、并发收集器。因此串行回收默认被应用在Client模式下的JVM中。
-
并行垃圾收集器
并行垃圾收集器可以利用多个CPU同时执行垃圾回收,在多CPU场景下,其停顿时间往往要小于串行收集器,因此其提升了应用程序的吞吐量。
串行和并行都是采用独占式,使用"Stop The World"机制
2)按照工作模式分
-
并发式
并发垃圾回收器中,垃圾回收线程和应用线程可以交替执行,以尽可能地减少垃圾回收时应用程序的停顿时间。</