现在很多开发者仍然搞不清垃圾收集器。这一块在Java 8版本的改动也比较大,特别是去掉了PermGen永久代和带来一些新的让人激动的优化。
提到垃圾收集,大多数人在每天的编程工作中都会用到并知道这个概念。其中最大的一个误解是一位JVM只有一个垃圾收集器,事实上它有4个,每个都有自己的优点和缺点。JVM并不会自动帮你选择,决定权在你手里,不同的选择会导致应用的吞吐量(throughtput)和停顿(pause)有巨大的不同。
但这4个垃圾收集器的共同点是它们都是分代式的,这是说它们基于大多数对象的都比较短命需要快速回收的假设把堆分成不同年龄区域。很多人应该也知道这一点。这4个垃圾收集器各有什么优缺点呢?
1. 串行收集器Seiral Collector