Java垃圾回收併發和並行

NO IMAGE

英文單詞

併發:Concurrency 並行:Parallelism

併發

一個併發程式是具備處理多個任務的能力。併發並不需要有多個CPU,單個CPU通過時間片的方式,不同時間片處理不同任務,可以讓程式“看起來”是都在執行的。

並行

並行表示在同一個時間點,有多個任務都在進行當中。並行是需要多個CPU才可以完成的。如果說每一個CPU都在執行一個程式,那麼4個CPU就可以讓4個程式“並行”運算。

Java垃圾回收器

序列處理器

  1. Serial收集器:
    用於新生代,單執行緒並Stop The World
    一般用於單CPU的應用,設定-XX: UseSerialGC,可以保證較高的吞吐率
  2. SerialOld收集器:
    用於老年代,單執行緒。

並行收集器

  1. ParNew收集器
    用於新生代,使用者響應時間比較短,適用於server。是CMS預設的新生代收集器
  2. Parallel Scavenge收集器
    用於新生代,吞吐量比較高,但是使用者響應時間比較長,適用於後臺。
  3. Parallel Old收集器
    用於老年代,響應時間較長,吞吐量較大。適用於後臺,和Parallel Scavenge配合使用。

併發收集器

  1. CMS(Concurrent Mark Sweep),可以對老年代進行並行的垃圾回收。值得注意的是,jdk6以前,如果老年代使用了CMS,那麼新生代只能使用Serial或ParNew收集器。
  2. G1(Garbage First),並行和併發,降低Stop The World的時間

參考連結

七個垃圾收集器的終極對比
GC 日誌