1、JVM內存模型,哪些是線程共有的,哪些是線程私有的。

詳解 JVM 內存模型
JVM 內存模型主要指運行時的數據區,包括 5 個部分,如下圖所示 

 

棧也叫方法棧,是線程私有的,線程在執行每個方法時都會同時創建一個棧幀,用來存儲局部變量表、操作棧、動態鏈接、方法出口等信息。調用方法時執行入棧,方法返回時執行出棧。

 

本地方法棧與棧類似,也是用來保存線程執行方法時的信息,不同的是,執行 Java 方法使用棧,而執行 native 方法使用本地方法棧。 

程序計數器保存着當前線程所執行的字節碼位置,每個線程工作時都有一個獨立的計數器。程序計數器爲執行 Java 方法服務,執行 native 方法時,程序計數器爲空。 

       棧、本地方法棧、程序計數器這三個部分都是線程獨佔的。  

 

堆是JVM管理的內存中最大的一塊,堆被所有線程共享,目的是爲了存放對象實例,幾乎所有的對象實例都在這裏分配。當堆內存沒有可用的空間時,會拋出OOM異常。根據對象存活的週期不同,JVM把堆內存...

 

方法區也是各個線程共享的內存區域,又叫非堆區。用於存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據,JDK1.7中的永久代和JDK1.8中的Metaspace都是...

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章