Java虛擬機內存理解

java虛擬機內存模型是java程序運行的基礎。

我近端時間,在某資料上看了點關於java虛擬機的介紹,簡單記錄下來。

java虛擬機內存包括:

1、程序計數器:一塊很小的內存空間,java支持多線程,因此,每一個線程都必須用一個獨立的程序計數器,用於記錄下一條要運行的指令。如果當前線程正在執行一個java方法,則程序計數器記錄正在執行的java字節碼地址。如果當前線程正在執行一個native方法,則程序計數器爲空。

2、虛擬機棧:這一塊空間也是線程私有的內存空間,它java線程在同一時間創建,它保存局部變量、部分結果、並參與方法的調用和返回。

3、本地方法棧:與java虛擬機棧的功能很相似,java虛擬機棧用於管理java函數的調用,而本地方法棧用於管理本地方法的調用。本地方法並不是java實現的,而是使用C實現的。在SUN的 hot spot虛擬機中,不區分本地方法棧和虛擬機棧。

4、java堆:這部分內存空間是最重要的部分,幾乎多有的對象和數組都在堆中分配空間。這裏又細分爲:新生代和老年代兩個部分。具體的內容,後面這裏再補一篇博客,詳細寫。

5、方法區:這塊內存區域與堆內存區域類似,是被JVM中所有線程共享的。主要保存的信息是類的元數據。

總結就是以上五個部分。

java虛擬機內存模型圖:


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