jvm內存區域--運行時數據區

做爲一個java開發 jvm 你就必需要了解一下,java

如今從最基本運行時數據區開始學習。數組

首先須要先了解下 運行時數據區域是如何劃分的jvm

內存區主要能夠劃分爲以下幾部分學習

1)方法區線程

2)堆對象

3)a 虛擬機堆棧 b本地方法棧生命週期

4)程序計數器內存

其中1)2)是線程共享的 3)4)線程私有生命週期與線程同步。開發

下面介紹下各區域主要存儲數據類型編譯器

 

程序計數器是:一塊較小的內存空間 能夠看做當前線程所執行的字節碼的行號指示器

若是是java方法 則計數器記錄的是正在執行的虛擬機字節碼指令的地址,若是是native方法(java調用非java方法)則這個計數器的值爲空;

java虛擬機棧 :每一個方法執行時都會建立一個棧幀用於存儲局部變量表,操做數棧,動態連接,方法出口等信息,每一個方法從調用到執行都對應着一個棧幀的入棧到出棧。局部變量表存放預編譯期可知的各類基本數據類型,對象引用類型(不等同於對象的實例對象實例存儲於堆中),returnAddress類型(指向一條字節碼指令的地址)局部變量表所需的內存空間在預編譯期完成分配。

本地方法棧:與虛擬機棧相同區別在於本地方法棧爲native方法服務。

java堆:堆內存主要存儲對象實例,數組;

方法區: 主要存儲類信息,常量,靜態變量,即時編譯器編譯後的代碼等數據

作一些基本知識的總結。

相關文章
相關標籤/搜索