JVM記憶體區域劃分和執行時的使用情況
阿新 • • 發佈:2019-02-08
1. JVM對自己的記憶體進行了劃分,分成了五個區域
a.暫存器:記憶體和CPU之間(系統相關)
b.本地方法棧:JVM呼叫了系統中的功能(系統相關)
c.方法和資料共享區:執行時期.class檔案進入的地方
d. 方法棧:所有方法執行的時候,進入記憶體中的位置
e.堆:儲存的是容器和物件
2. main方法在執行過程中JVM的使用情況
a.在點選run as後,編譯產生的.class檔案、static方法、static屬性進入方法和資料共享區(所以static方法和static變數在編譯時執行和載入);
b.接著main方法壓棧執行,main方法是程式執行的入口,所以main方法都是最先進入方法棧,在程式執行完畢後,最後彈出方法棧
c.在main方法執行過程中,如果呼叫了其他的方法,被呼叫的方法壓棧執行,執行完彈出棧
d.在方法執行的過程中變數,常量都在堆記憶體中儲存,引用變數實際上就是指向所存內容的記憶體地址
3.物件在執行時的記憶體圖解
main方法進棧執行,new Car()即相當於在堆記憶體中劃分出一塊記憶體,儘管記憶體中的屬性未賦值,但此時各個屬性的預設值都已經放入記憶體中(如String型放入null,int型放入0等),此時其屬性在記憶體中也已經佔據位置;然後在給物件賦值的過程中,物件相應屬性的位置替換為賦值的值。