垃圾收集器
垃圾收集器
Java发展至今有很多的收集器,而最具划时代的收集器就是G1了。
可以把收集器发展简单划分成四个阶段:
1、单线程阶段,对应收集器:Serial、Serial Old;
2、并行阶段,多条收集器线程,对应收集器:ParNew、Parallel Scavenge、Parallel Old;
3、并发阶段,收集器线程与用户线程同时运行,对应收集器:CMS(Concurrent Mark Sweep);
4、并行+并发+分区阶段,堆内存划分成多个小块进行收集,对应收集器:G1(Garbage First);
GC过程一定会发生STW(Stop The World),而一旦发生STW必然会影响用户使用,所以GC的发展都是在围绕减少STW时间这一目的。通过并行与并发已经极大的减少了STW的时间,但是STW的时间还是会因为各种原因不可控,而G1提供的一个最大功能就是可控的STW时间。