棧
線程執行方法都會創建一個棧陣 , 用來存儲局部變量 , 操作棧 , 動態鏈接 ,方法出口等信息 ,調用方法時執行入棧 , 方法返回式執行出棧
本地方法棧
與棧類似 ,也是用來腦村執行方法的信息 , 執行java方法是使用棧 ,執行native方法時使用本地方法棧
程序計數器
保存着當前線程執行的字節碼位置 ,每個線程工作時都有獨立的計數器 ,只爲執行java方法服務 ,執行native方法時,程序計數器爲空
堆
JVM內存管理最大的一塊 ,對被線程共享 ,目的是存放對象的實例 ,幾乎所有的對象實例都會放在這裏 ,當堆沒有可用空間時 ,會拋出OOM異常, 根據對象的存活週期不同 ,JVM吧對象進行分代管理 , 由垃圾回收器進行垃圾的回收管理
方法區
又稱非堆區 ,用於存儲已別虛擬機加載的類信息 ,常量 ,靜態變量 ,即使編譯器優化後的代碼等數據 ,1.7的永久代和1.8的元空間都是方法區的一種實現