整个回收期间划分成多个阶段:初始标记、并发标记、重新标记、并发清除等。在初始标记和重新标记阶段需要暂停应用程序线程,在并发标记和并发清除期间工作线程可以和应用程序并发运行。这个算法通常适用于老生代,新生代可以采用并行复制回收,也可以采用串行复制算法。CMS垃圾回收的执行过程如图1-3所示。
图1-3 CMS垃圾回收
同样,在老生代回收时,因为是并发执行,如果在分配内存时发现内存不足,则需要进行FGC,也需要STW并对整个内存进行串行回收。 f9GtqVVYtrthwqZWCsJ/f7Lj80nwzy4ls6PI9kFbqILUKT8awDpqfMOOO7Rf39u0