JVM內存劃分(-) big picture

 Jvm的內存可以劃分爲5個區域

1.虛擬機棧(java virtual machine stacks), 一個方法的執行過程,就是一個棧幀進棧和出棧的過程,棧幀包含的信息包括:局部變量表,操作數棧,動態鏈接,方法出口信息等。

其中局部變量表中存放着基本數據類型,對象的引用,returnAddress類型等。

 

2.本地方法棧(native method stacks), 和虛擬機棧的作用類似,存放的是native的方法。

 

3.java堆(java heap), 堆是java回收器(gc)的主要工作區域,一般可以分爲新生代和老年代,更細一點,可以分爲eden空間, from survivor空間和to survivor空間。

 

4.方法區(method area), 方法區中存放着已被虛擬機加載的類信息,常量,靜態變量,即時編譯(Just in time, JIT)後的代碼。

在sun的HotSpot中,一般把方法區稱爲永生代,實際上,應該說是sun用永生代實現了方法區

 

5.直接內存(direct memory), java使用native方法創建的堆外內存,如NIO。計算機管理員設置java的內存時,需要考慮到該部分的大小,否則容易被髮oom.

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