背景:看完《深入理解Java虛擬機》和相關博客,對JVM還是沒有一個條理清晰的認識,遂提取了書中相關知識點和參考相關優(yōu)秀博客并整理成JVM專題博文系列,幫助自己鞏固并理清有關JVM的知識重點,也分享出來給有需要的童鞋,如有差錯,歡迎拍磚!
JVM總體概述
JVM總體上是由類裝載子系統(tǒng)(ClassLoader)、運行時數(shù)據(jù)區(qū)、執(zhí)行引擎、內(nèi)存回收這四個部分組成。其中我們最為關注的運行時數(shù)據(jù)區(qū),也就是JVM的內(nèi)存部分則是由方法區(qū)(Method Area)、JAVA堆(Heap)、虛擬機棧(Stack)、程序計數(shù)器、本地方法棧這幾部分組成;除此以外,在概念中還有一個直接內(nèi)存的概念,事實上這部分內(nèi)存并不屬于虛擬機規(guī)范中定義的內(nèi)存區(qū)域,但是因為在JDK1.4+后新加的NIO類,以及JDK1.8+后的Metaspace的關系,所以在討論JVM時也經(jīng)常會被放到一起討論。

JVM內(nèi)存結構
運行時數(shù)據(jù)區(qū),也就是JVM的內(nèi)存部分圖解

JVM內(nèi)存
堆內(nèi)存是GC重點回收區(qū)域,其中分代回收機制將堆內(nèi)存劃分為年輕代、老年代兩個區(qū)域,默認情況下年輕代占整個堆內(nèi)存空間的1/3,而老年代則占2/3,可以通過“-XX:NewRatio”設置年輕代與老年代的比值,默認為2,表示比值年輕代與老年代的比值為“1:2”,在JVM調(diào)優(yōu)時可根據(jù)應用實際情況進行調(diào)整。
而年輕代又分為Eden、Survivor0、Survivor1,這三個區(qū)域占整個新生代空間的比值為8:1:1,即Eden區(qū)占8/10,其他兩個區(qū)域分別占1/10,可通過“-XX:SurvivorRatio”參數(shù)進行設置,默認值為8。
JVM參數(shù)總結

JVM參數(shù)總結
參考:
技術討論 & 疑問建議 & 個人博客
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 3.0 許可協(xié)議,轉(zhuǎn)載請注明出處!