JVM 堆結構中,堆記憶體按代管理,依序為年輕代(Eden、Survivor 0、Survivor 1)、老年代。年輕代用於新物件分配,老年代用於長期物件儲存。元空間(JVM 8 及以上)用於儲存元資料。在實戰範例中,程式建立了兩個對象,並列印出堆資訊(總記憶體、可用記憶體、已使用記憶體)。
#Java 虛擬機器(JVM) 記憶體模型中的堆是一種特殊的記憶體區域,用於儲存物件實例和陣列。它是一個分代記憶體管理系統,分為年輕代和老年代。
年輕代:
老年代:
元空間:
以下Java 程式碼展示了堆結構的用法:
public class HeapExample { public static void main(String[] args) { // 创建新对象,存储在年轻代 (Eden 空间) Object object1 = new Object(); // 触发新生代垃圾收集,将长期对象晋升到老年代 System.gc(); // 创建另一个对象,存储在老年代 Object object2 = new Object(); // 打印堆信息 printHeapInfo(); } private static void printHeapInfo() { long totalMemory = Runtime.getRuntime().totalMemory(); long freeMemory = Runtime.getRuntime().freeMemory(); System.out.println("Total memory: " + totalMemory); System.out.println("Free memory: " + freeMemory); System.out.println("Used memory: " + (totalMemory - freeMemory)); } }
這段程式碼建立了兩個對象,其中第一個物件object1
儲存在年輕代,而第二個物件object2
則儲存在老年代。程式碼也會輸出堆訊息,包括總記憶體、可用記憶體和已使用記憶體。
以上是Java虛擬機器記憶體模型中的堆結構是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!