程序計數器
當前線程所執行的字節碼的行號指示器
每個線程都有一個程序計數器,私有不共享
這個是唯一一個不會發生OOM的內存區域
Java虛擬機棧
局部變量表
局部變量槽
異常
StackOverFlowError
OutOfMemoryError
本地方法棧
與Java虛擬機棧作用類似
HotSpot虛擬機將Java虛擬機棧和本地方法棧合二爲一了
Java堆
最大的一塊內存區域,大家共享
存放對象實例
分區
新生代
老年代
永久代(後變成了元空間)
Eden空間
From Survivor空間
To Survivor空間
方法區
各個線程共享
最初由永久代實現,後修改爲了元空間實現
運行時常量池
其他
直接內存
不屬於虛擬機運行時數據區
但是這部分內存被頻繁地使用
也可能導致OOM