JVM的GC併發、並行
阿新 • • 發佈:2018-11-05
英文單詞
併發:Concurrency 並行:Parallelism
併發
一個併發程式是具備處理多個任務的能力。併發並不需要有多個CPU,單個CPU通過時間片的方式,不同時間片處理不同任務,可以讓程式“看起來”是都在執行的。
並行
並行表示在同一個時間點,有多個任務都在進行當中。並行是需要多個CPU才可以完成的。如果說每一個CPU都在執行一個程式,那麼4個CPU就可以讓4個程式“並行”運算。
Java垃圾回收器 序列處理器
- Serial收集器:
用於新生代,單執行緒並Stop The World
一般用於單CPU的應用,設定-XX:+UseSerialGC,可以保證較高的吞吐率 - SerialOld收集器:
用於老年代,單執行緒。
並行收集器
- ParNew收集器
用於新生代,使用者響應時間比較短,適用於server。是CMS預設的新生代收集器 - Parallel Scavenge收集器
用於新生代,吞吐量比較高,但是使用者響應時間比較長,適用於後臺。 - Parallel Old收集器
用於老年代,響應時間較長,吞吐量較大。適用於後臺,和Parallel Scavenge配合使用。
併發收集器
- CMS(Concurrent Mark Sweep),可以對老年代進行並行的垃圾回收。值得注意的是,jdk6以前,如果老年代使用了CMS,那麼新生代只能使用Serial或ParNew收集器。
- G1(Garbage First),並行和併發,降低Stop The World的時間