java虛擬機 jvm java堆 方法區 java棧
阿新 • • 發佈:2017-08-19
相同 分享 就會 例如 content == 不同的 avi 管理
s0或者s1,之後沒經過一個新生代回收,年齡+1.當對象年齡達到一定條件後,就會老齡化進入老年代。
java堆是java應用程序最密切的內存空間。
差點兒全部的對象都存在堆中。java堆全然自己主動化管理,通過垃圾回收機制,垃圾對象會自己主動清理。不須要顯式釋放。
依據java垃圾回收機制的不同。java堆可能有不同的結構。
最常見的是將整個java堆分為新生代和老年代。跟人類幾乎相同了。老齡化就有可能找上帝去了,新生代存放新對象或者年齡不大的對象,老年代存放老年對象。新生代有可能分為eden區、s0區和s1區,s0區和s1區也被稱之為 from 到to區域。他們是兩塊大小相等能夠互換的內存空間例如以下圖所看到的:
在大多數情況下。對象首先被分配在eden區,再一次新生代回收後,假設對象還存在,則會進入
以下一個簡單的實例展示java堆、java方法區、java棧之間的關系。代碼例如以下:
package cn.xhgg.test; public class HeapTest { private int id; public HeapTest(int id) { this.id = id; } public void show() { System.out.println("id: "+id); } public static void main(String[] args) { HeapTest h1 = new HeapTest(1); HeapTest h2 = new HeapTest(3); h1.show(); h2.show(); } }
HeapTest 實例引用類型肯定分配在堆中、h1、h2局部變量存放在java棧中、並指向堆中的兩個實例。
例如以下圖所看到的:
java虛擬機 jvm java堆 方法區 java棧