一、運行時數據區分爲以下幾個模塊
注:其中本地方法棧、虛擬機棧、程序計數器是單線程私有,Java堆和方法區多線程共享
二、分區簡單介紹
1. 虛擬機棧
虛擬機棧是由棧幀組成的,調用一個方法就往虛擬機棧中壓入一個棧幀。棧幀用於存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。
2.程序計數器
當前線程所執行的字節碼行號指示器。
3.本地方法棧
爲虛擬機用到的Native方法服務。
4.Java堆
此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這裏分配內存。也是垃圾收集器管理的主要區域。Java堆可以處於物理上不連續的內存空間,只要邏輯上是連續的即可。
5.方法區
存儲信息有類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據。