1.java虛擬機棧:
棧是運行是創建的,生命週期與線程相同,存棧幀的,
用於:存儲局部變量表(編譯器可知的各種基本數據類型,boolean,type,char...等,對象引用),
操作數棧,動態鏈表,方法出口
2.本地方法棧:
與虛擬機棧發揮作用非常相似,之間區別不過是虛擬機棧爲虛擬機執行java方法服務,
而本地方法棧則爲虛擬機使用到的native方法服務。對本地方法棧中使用的語言,使用
方式與數據結構並沒有強制規定,因此具體的虛擬機可以自由發揮實現它。
3.java堆:
java虛擬機所管理的內存中最大的一塊,被所有線程共享的一塊內存區域,子虛擬機
啓動時創建,此內存區域唯一的目的就是存放對象實例,幾乎所有的對象實例都在這
裏分配內存。java堆是垃圾回收器管理的主要區域,因此被稱作“垃圾堆”。收集器基本
採用分代收集算法,所以java堆還可以細分爲:新生代,老生代;
方法區:
方法區與java堆一樣,存放各個線程共享的內存區域。他用於存儲已被虛擬機加載的
類信息,常量,靜態變量,即時編譯器編譯後的代碼等數據。在HotSprot虛擬機上開發
常常稱爲“永久代”。
5.運行時常量池
是方法區的一部分,用於存放編譯期生成的各種字面量和符號引用,這部分內容將在類
加載後進入方法區的運行時常量池中存放。