深入理解JavaVM-第一章:Java虛擬機器介紹

1。1 jvm分類

Sun Classic VM : 世界上第一款商用的Java虛擬機器 Extract VM:準確試記憶體管理 編譯器和直譯器混合工作以及兩級及時編譯器HotSpot VM:KVM: kilobyte 簡單,輕量, 高度可移植。 在手機平臺執行JRockit: BEA。 世界最快的Java虛擬機器 優勢 1。垃圾收集器。2。 MissionControl 服務套件J9:Dalvik:Microsoft JVM:Azul VM Liquidj VM: 高效能的Java虛擬機器TaobaoVM:

1。2 Java虛擬機器記憶體管理

執行緒共享區:方法區,Java堆

執行緒獨佔區:程式計數器, 虛擬機器棧,本地方法棧

深入理解JavaVM-第一章:Java虛擬機器介紹

1。2。1 程式計數器

當前程式執行的位元組碼行號程式計數器處於執行緒獨佔區執行Java方法,計數器記錄當前程式地址,native方法,記錄undefined此區域沒有任何記憶體溢位

1。2。2 Java虛擬機器棧

棧幀: 每個方法執行,都會建立一個棧幀區域性變量表: 存放編譯期可知的各種基本資料型別,引用型別,returnAddress大小:遞迴的調用出現棧溢位: stackoverflowError:棧溢位 OutOfMemery

1。2。3 Java虛擬機器的本地方法棧

為虛擬機器執行native方法的

1。2。4 Java虛擬機器記憶體區域——堆區域

存放物件例項垃圾收集器管理的主要區域新生代。老年代

1。2。5 Java記憶體區域-方法區

1。儲存虛擬機器載入的類資訊,常量,靜態變數,即時編譯器編譯後的程式碼等資料2。方法區和永久代3。垃圾回收在方法區的行為4。異常的定義 OutOfMemeryError

1。2。6 Java記憶體區域-直接記憶體和執行時常量池

1。 String s1 = “abc”; String s3 = new String(“abc”); s3。internal() 執行時常量 2。直接記憶體 能夠分配堆外記憶體

1。2。7 物件在記憶體中的佈局——物件的建立

深入理解JavaVM-第一章:Java虛擬機器介紹