總錄
| 名字 | 回收算法 | 特點 | 適用場景 |
|---|---|---|---|
| Serial | 復制算法(新生代) | 串行,實現(xiàn)簡單效率高,可靠性高,但是有較長的STW | 單核環(huán)境和客戶端 |
| Serial Old | 標記壓縮算法(老年代) | 串行,實現(xiàn)簡單效率高,可靠性高,但是有較長的STW | 單核環(huán)境和客戶端,以及作為CMS的后備回收器或搭配Parallel Scavenge使用 |
| ParNew | 復制算法(新生代) | 并行,可以利用服務器的多核優(yōu)勢,有較長的STW | 對STW不敏感的應用或搭配CMS |
| Parallel Scavenger | 復制算法(新生代) | 并行,可以實現(xiàn)可控的吞吐量 | 追求高吞吐量的應用 |
| Parallel Old | 標記壓縮(老年代) | 并行 | 注重高吞吐量以及CPU資源敏感的場合,都可以優(yōu)先考慮Parallel Scavenge+Parallel Old 收集器 |
| CMS | 標記清除(老年代) | 基于標記-清除算法實現(xiàn)。并發(fā)收集、低停頓且會產(chǎn)生內(nèi)存碎片 | 適用于注重服務的響應速度,希望系統(tǒng)停頓時間最短,給用戶帶來更好的體驗等場景下。如web程序、b/s服務 |
CMS流程
- 初始標記:收集根節(jié)點信息(STW)
- 并發(fā)標記:根據(jù)根節(jié)點找到存活對象
- 重新標記:為了修正并發(fā)標記期間因用戶程序繼續(xù)運行而導致標記產(chǎn)生變動的那一部分對象的標記記錄(STW)
- 并發(fā)清除:對標記的對象進行清除回收。
參考文章:http://www.itdecent.cn/p/55670407fdb9
G1
G1不同于別的垃圾回收器,JVM堆不再被簡單的分為新生代和老年代.
G1講堆分為多個大小相等的Region,每個region扮演不同的角色,比如有年輕代region,老年代region,復制區(qū)region和大對象region等.
G1通過對分區(qū)域的回收達到了高并發(fā).