JVM中的記憶體型別(資料區域)
阿新 • • 發佈:2018-12-18
Java一詞狹義上指的是Java程式語言,廣義上來說還包括Java平臺。Java虛擬機器作為一個平臺來執行由Java原始碼編譯成的.class檔案,Java的跨平臺性也是通過JVM來實現的。
JVM之所以稱之為虛擬機器,就是因為JVM就像是執行在底層物理機上面的一臺虛擬機器,它的各個部分互相配合,完成了一個Java應用程式的執行。本文就簡單地對JVM執行過程中的各個資料區域做一個介紹。
JVM這個詞語狹義上指的是一種規範,不特指某一種具體的實現,最常見的實現是Oracle的HotSpot,這裡是一份所有JVM實現的列表。但是我們說JVM時也可以指HotSpot,本文是在參考Java SE 8的JVM說明和HotSpot的文件的基礎上寫的,哪些屬於JVM說明,哪些屬於HotSpot實現,我會在文中做出說明。
下圖來自Oracle官網上一篇名為Java Garbage Collection Basics的文章。但是也有點問題,先貼上來,我會進行一些說明。 Runtime Data Areas從左往右看, 第一個是Method Area,這是JVM中的叫法,在HotSpot的Java SE 7版本中應該叫Permanent Generation,在HotSpot的Java SE 8版本中,取消了Permanent Generation,取而代之的是Metaspace,每個JVM程序中只有一個Method Area。Java應用程式執行時類載入器會尋找需要的類,找到後把.class檔案載入到Method Area