虛擬機棧(線程私有)
堆(Heap線程共享)運行時數據區
方式區/永遠代(線程共享)
java堆內存從GC的角度還可以細分為:新生代和老年月。下圖為堆內存的劃分
新生代: 用來存放新生的對象。一般占有堆的1/3的空間。因為頻仍建立對象,所以新生代會頻仍的觸發minorGC進行垃圾收受接管。新生代又分為Eden 、Form
survivor、To survivor三個區
Eden 區:java新對象的出生地(若是新建立的對象占用內存很大,會直接分派到老年月)。當Eden 區內存不敷的時辰會觸發Minor GC,對新生代進行一次垃圾收受接管。
Form survivor區 :上一次GC的幸存者,作為這一次GC的被掃描者。
To survivor區:保留了一次Minor GC過程中的幸存者。
老年月:本家兒要存放應用程序中生命周期長的內存對象。
元數據區(元空間):在JAVA8中,永遠代已經被移除,被元空間所替代。元空間的素質和永遠代相似,元空間和永遠代之間的區別在于元空間不在虛擬機中,而是利用當地內存。是以,默認環境下,元空間的巨細僅受當地內存限制。
類的元數據放入native memory,字符串池和類的靜態變量放入java堆中,這樣加載幾多類的元數據就不再由MaxPermSize節制,而由系統的現實可用空間來節制。
END0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!