自學提升:JVM點滴

寫在前面算法

   這年頭就是得不斷地學習. 學什麼東西就看須要了. 不學習很難進步. 同時別人也會超過你. 東西都是網上有的。圖片也好,文字也好。基本均可以在網上找到。服務器

 

JAVA運行原理併發

 

JVM包括字節碼解釋程序,執行器,方法區,堆,VM棧,本地方法棧,Program Counter計數器。elasticsearch

 

垃圾回收算法oop

 

GC主要分二類,新生代GC,老年代GC;學習

新生代GC包括:串行GC、並行GC、並行回收GCspa

老年代GC包括:串行GC、並行GC、CMS操作系統

G1比較特殊,同時支持新生代和老年代3d

GC選擇:

GC在選擇上,主要關注兩點,吞吐量優先和暫停時間優先,server

對於吞吐量優先的採用server默認的並行GC(Parallel GC)方式(上圖藍色區域),

對於暫停時間優先的選用併發GC(CMS)方式(上圖黃色區域),經常使用場景:互聯網、電商類

經常使用GC開啓方式

暫停時間優先: 並行GC + CMS

開啓方式[ -XX:+UseConcMarkSweepGC -XX:+UseParNewGC ]

吞吐量優先: 並行回收GC + 並行GC

開啓方式 [ -XX:+UseParallelOldGC ] ,此GC也時server模式默認的配置

G1: [ -XX:+UseG1GC ]

適用於服務器端、大內存、多CPU情景的垃圾收集器;

G1的目標是在維持高效率回收的同時,提供軟實時中斷特性

經常使用場景:hadoop、elasticsearch

CMS和G1區別

Cms 堆 -> 年輕代老年代

G1 堆 -> 多個區 -> 每一個區裏(年輕代老年代)

Cms 標記清理算法

G1 壓縮複製算法,不產生碎片

G1 時間停頓可設置,相關參數[ -XX:MaxGCPauseMillis=100 -XX:GCPauseIntervalMillis=200 ]

 

 

須要注意的是,JDK8中已經用Metaspace(元數據區)徹底替代了永久代(即方法區)

並且元數據區內存不在JVM中,而是使用的本地內存,默認狀況下受操做系統內存限制。

調整元數據區內存大小的參數 -XX:MetaspaceSize -XX:MaxMetaspaceSize

相關文章
相關標籤/搜索