前提:
在垃圾回收过程中,应用软件将处于一种Stop the World 的状态。在Stop the Word 状态下,应用程序所有的线程都会挂起,暂停一切正常的工作,等待垃圾回收的完成,如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或者系统的稳定性。为了解决这个问题,即对实时垃圾收集算法的研究直接导致增量收集算法和分区收集算法的诞生。
增量收集:
一、基本思想
如果一次性将所有的垃圾进行处理,需要造成系统长时间的停顿,那么就可以让垃圾收集线程和应用程序线程交替执行,每次,垃圾收集线程只收集一小片区域的内存空间,接着切换到应用程序线程,依次反复,知道垃圾收集完成
总的来说,增量收集算法的基础仍是传统的标记-清除和复制算法,增量收集算法通过对线程间冲突的妥善处理,允许垃圾收集线程以分阶段的方式完成标记、清理、或复制工作
二、缺点:
使用这种方式,由于在垃圾收集回收过程中,间断性地还执行了应用程序代码,所以能减少系统的停顿时间,但是,因为线程切换和上下文转换的消耗,会是得垃圾收集回收的总体成本上升,