運作時資料區:
1.線程共享區:堆,方法區
堆:存放一切new出來的東西(java對象執行個體和數組)。
方法區:存放被虛拟機加載的類資訊、常量、靜态變量、即時編譯器編譯後的代碼等資料。
2.線程獨占區:棧、本地方法棧、程式計數器
棧:java線程的運作狀态存儲在棧中;每一個被執行的方法為棧中的棧幀。每個棧幀包括:局部變量表(方法中定義的變量及方法中的參數)、操作數棧(以壓棧和出棧的方式存儲操作數)、動态連結(每個棧幀中都包含一個指向運作時常量池中該棧幀所屬方法的引用)、方法傳回位址(當一個方法開始執行後隻有兩種方式可以退出,一遇到方法傳回的位元組碼指令,二遇到異常且這個異常沒有在方法中得到處理)。
程式計數器:記錄線程執行到的位置。
本地方法棧:當線程執行的方法是native類型的,該方法就會在本地方法棧中執行。
1.棧指向堆:Object obj=new Object();因為new出來的一切都存放在堆中,而obj則是存放在棧中。
2.方法區指向堆:private static Object obj=new Object();因為方法區中存放常量、靜态變量、虛拟機加載後的類資訊等,所有obj是存放在方法區中,而new出來的一切都存放在堆中。
3.堆指向方法區:
