JVM內存區域

 

JVM 內存共分爲堆、方法區、虛擬機棧、本地方法棧、程序計數器五個部分。

如下圖

1 堆

Java堆內存是 JVM 所有線程共享的部分,在虛擬機啓動的時候就已經創建.此區域的唯一目的是存放數據對象,

所有的對象實例以及數組都要在堆上分配,

Java堆是垃圾收集器管理的主要區域,因此很多時候也被稱爲GC堆,java中的堆可以分爲新生代和老年代

例如:

String str =new String("abc");

"abc" 就存放在堆中

2 方法區

方法區於Java堆一樣,是各個線程共享的區域,它用於存儲已被虛擬機加載的類信息,常量,靜態變量即時編譯後的代碼等數據

例如:

String str="abc"
abc 就是存放在常量池裏面,當然也算是存放在方法區裏面

3 Java虛擬機棧

Java虛擬機棧是線程私有的,它的生命週期與線程相同.java虛擬機棧描述的時Java方法區的內存模型:每個方法在執行的同時

都會創建一個棧幀用於存儲局部變量表,操作數據棧,動態lian鏈接,方法出口等信息..

例如:

String str ="abc"

str 就存放在棧中

4 本地方法棧

本地方法棧與虛擬機棧的作用非常相似,區別就是虛擬機棧爲虛擬機執行java方法(也就是字節碼)服務

本地方法棧則爲虛擬機使用到Native方法服務

5 程序計數器

程序計數器是一塊較小的內存空間,它可以看做是當前線程所執行的字節碼的型號指示器

 

 

 

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