方法區: 各線程共享區域,存儲被類加載的類信息,常量,靜態變量,運行時常量池數組
堆(GC):JVM託管的內存中最大的一塊。全部線程共享,虛擬機啓動時建立;惟一目的存放對象實例;全部對象實例和數組都要在對上分配;spa
分代GC; 新生代和老年代:Eden,From Survior,To Survior線程
虛擬機棧:線程私有,每一個方法執行時會同步建立一個棧幀,存儲存儲局部變量表(基礎數據類型+引用類型)、操做數棧,動態連接,方法出口;每一個方法從調用直到執行完成,都對應一個棧幀在虛擬機棧從入棧到出棧過程。對象
線程請求棧深度大於JVM容許的深度,StackOverflowError: 虛擬機擴展到沒法申請新內存, OutOfMemoryErrorblog
本地方法棧:爲虛擬機使用的Native方法服務內存
程序計數器:
同步
JVM遇到new命令,虛擬機
1)檢查指令參數是否可在常量池定位一個類的符號引用,檢查該符號應用表明的類是否已加載,解析和初始化過;若是沒有,執行類的加載;io
2)爲新生對象分配內存,從堆中分配內存。基礎