JVM:JVM的記憶體結構
阿新 • • 發佈:2018-12-15
前言
今天開始JVM的學習,從JIVM的記憶體結構開始JVM之旅。
記憶體結構圖
程式計數器:
容量:較小的記憶體空間
作用:當前執行緒所執行的行號指示器
說明:JAVA方法,則程式計數器的記錄就是當前虛擬機器位元組碼指令的地址。本地方法,則為空。
共享還是私有:執行緒私有,執行緒間互不影響
JAVA虛擬機器棧:
作用:
每個方法在執行時會建立一個棧幀,一個方法的執行就是這個棧幀在虛擬機器棧入棧出棧的過程。
說明:棧幀用於儲存區域性變量表、運算元棧、方法出口、動態連結
共享還是私有:執行緒私有
本地方法棧:
作用:
執行本地方法 native方法
共享還是私有:執行緒私有
堆
容量:jvm中容量最大的區域
作用:用於存放例項化物件和陣列,GC的主要區域
共享還是私有:共享
說明:堆可以是空間上不連續但是邏輯上連續的區域。
方法區
作用:儲存已被虛擬機器載入的類資訊、常量、靜態變數
共享還是私有:共享
說明:常被稱為非堆,在GC分代機制中被劃入永久代
執行時常量池
作用:儲存編譯器字面值常量、符號引用,也可以在執行期放資料到常量池,常用於String的intern
共享還是私有:共享
說明:認為是方法區的一部分。在JDK8開始,這一塊區域放在元空間。
直接記憶體
作用:常用於NIO操作,NIO後面在學習
說明:直接記憶體不屬於JAVA虛擬機器的記憶體結構,不屬於JVM管控,稱之為堆外記憶體。