关于并发和并行
对于并发和并行的概念,并发指的是一个CPU不断的通过时间片切换来执行不同的任务,并行是指多个CPU同时执行不同的任务。
Java中GC的并发和并行
在Java GC中,也有并发和并行回收的概念。
- 并行垃回收圾其实就是Parallel GC,具体到垃圾回收器上就是Parallel Scavenge,Parallel Old,ParNew。
- 并发垃圾回收比较经典的就是CMS,G1。
并行回收器主要的关注目标是吞吐量(吞吐量=代码运行时间/(代码运行时间+垃圾收集时间),所以他会想尽办法最高效率的利用CPU时间来进行垃圾回收。所以他会在垃圾收集期间通常会暂停应用程序的执行(STW),以快速完成垃圾收集。
并发回收器主要关注的目标是STW的时长,它允许垃圾收集线程在应用程序线程运行的同时执行部分垃圾收集工作,从而减少了STW的时间。并发回收期间,只有在特定的收集阶段会发生短暂的STW。