GC和GC Tuning

作者:馬士兵教育 http://mashibing.com

GC的基礎(chǔ)知識

1.什么是垃圾

C語言申請內(nèi)存:malloc free
C++: new delete
Java: new ?

自動內(nèi)存回收,編程上簡單,系統(tǒng)不容易出錯,手動釋放內(nèi)存,容易出兩種類型的問題:

  1. 忘記回收
  2. 多次回收

沒有任何引用指向的一個對象或者多個對象(循環(huán)引用)

2.如何定位垃圾

  1. 引用計數(shù)
  2. 根可達(dá)算法

3.常見的垃圾回收算法

  1. 標(biāo)記清除 - 位置不連續(xù) 產(chǎn)生碎片
  2. 拷貝算法 - 沒有碎片,浪費(fèi)空間
  3. 標(biāo)記壓縮 - 沒有碎片,效率偏低

4.JVM內(nèi)存分代模型(用于分代垃圾回收算法)

  1. 部分垃圾回收器使用的模型
  2. 新生代 + 老年代 + 永久代(1.7)/ 元數(shù)據(jù)區(qū)(1.8) Metaspace
    1. 永久代 元數(shù)據(jù) - Class
    2. 永久代必須指定大小限制 ,元數(shù)據(jù)可以設(shè)置,也可以不設(shè)置,無上限(受限于物理內(nèi)存)
    3. 字符串常量 1.7 - 永久代,1.8 - 堆
    4. MethodArea邏輯概念 - 永久代、元數(shù)據(jù)
  3. 新生代 = Eden + 2個suvivor區(qū)
    1. YGC回收之后,大多數(shù)的對象會被回收,活著的進(jìn)入s0
    2. 再次YGC,活著的對象eden + s0 -> s1
    3. 再次YGC,eden + s1 -> s0
    4. 年齡足夠 -> 老年代 (15 CMS 6)
    5. s區(qū)裝不下 -> 老年代
  4. 老年代
    1. 頑固分子
    2. 老年代滿了FGC Full GC
  5. GC Tuning (Generation)
    1. 盡量減少FGC
    2. MinorGC = YGC
    3. MajorGC = FGC

5.常見的垃圾回收器

  1. Serial 年輕代 串行回收
  2. PS 年輕代 并行回收
  3. ParNew 年輕代 配合CMS的并行回收
  4. SerialOld
  5. ParallelOld
  6. ConcurrentMarkSweep 老年代 并發(fā)的, 垃圾回收和應(yīng)用程序同時運(yùn)行,降低STW的時間(200ms)
  7. G1(10ms)
  8. ZGC (1ms) PK C++
  9. Shenandoah
  10. Eplison

1.8默認(rèn)的垃圾回收:PS + ParallelOld

6.JVM調(diào)優(yōu)第一步,了解生產(chǎn)環(huán)境下的垃圾回收器組合

  • JVM的命令行參數(shù)參考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

  • JVM參數(shù)分類

    標(biāo)準(zhǔn): - 開頭,所有的HotSpot都支持
    非標(biāo)準(zhǔn):-X 開頭,特定版本HotSpot支持特定命令
    不穩(wěn)定:-XX 開頭,下個版本可能取消
    -XX:+PrintCommandLineFlags
    -XX:+PrintFlagsFinal 最終參數(shù)值
    -XX:+PrintFlagsInitial 默認(rèn)參數(shù)值

參考資料

  1. https://blogs.oracle.com/jonthecollector/our-collectors
  2. https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
  3. http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容