1、程序計數器
程序計數器是一塊比較小的內存空間,可以看做是當前線程所執行的字節碼的行號指示器。
多線程時,爲了線程切換後能恢復到正確的執行位置,每條線程都需要有一個獨立的程序計數器,各條線程之間計數器互不影響,獨立存儲。
我們稱這類內存區域爲“線程私有”的內存。
2、棧stack
線程私有,生命週期和線程相同。
存放基本數據類型和對象的引用。
基本數據類型有8種,Boolean,byte,int,double,float,short,long,char。
3、堆Heap
java堆是java虛擬機內存中最大的一塊。
java堆是被所有線程所共享的一塊區域,在虛擬機創建時啓動,存放對象實例。
java堆是垃圾回收器管理的主要區域,因此又被稱爲“GC堆”(Garbage Collection Heap)。
java堆還可以細分爲新生代和老年代。
4、方法區
方法區,和java堆一樣,是線程共享的一塊區域,用於存儲已經被虛擬機加載的類信息,常量,靜態變量、即時編譯器編譯的代碼。
運行時常量池是方法區的一部分。