【Java虛擬機】內存分配和GC機制

JAVA內存模型

方法區:  各線程共享區域,存儲被類加載的類信息,常量,靜態變量,運行時常量池數組

堆(GC):JVM託管的內存中最大的一塊。全部線程共享,虛擬機啓動時建立;惟一目的存放對象實例;全部對象實例和數組都要在對上分配;spa

                  分代GC; 新生代和老年代:Eden,From Survior,To Survior線程

虛擬機棧:線程私有,每一個方法執行時會同步建立一個棧幀,存儲存儲局部變量表(基礎數據類型+引用類型)、操做數棧,動態連接,方法出口;每一個方法從調用直到執行完成,都對應一個棧幀在虛擬機棧從入棧到出棧過程。對象

                線程請求棧深度大於JVM容許的深度,StackOverflowError:    虛擬機擴展到沒法申請新內存, OutOfMemoryErrorblog

本地方法棧:爲虛擬機使用的Native方法服務內存

程序計數器:

同步

對象建立過程:

JVM遇到new命令,虛擬機

1)檢查指令參數是否可在常量池定位一個類的符號引用,檢查該符號應用表明的類是否已加載,解析和初始化過;若是沒有,執行類的加載;io

2)爲新生對象分配內存,從堆中分配內存。基礎

相關文章
相關標籤/搜索