Java 中的記憶體管理
Java 的記憶體分配分為兩個主要部分:堆和非堆。堆是運行時資料區域,Java 虛擬機器 (JVM) 從中為類別實例和陣列分配記憶體。非堆包括 JVM 內部處理和最佳化所需的記憶體。
堆記憶體
堆記憶體進一步分為三個池:Eden Space、Survivor Space 和 Tenured Generation( Old Gen)。
-
Eden Space: 記憶體最初分配給大多數物件來自 Eden Space 池。
-
Survivor Space: 在 Eden Space 垃圾回收中倖存下來的物件將被移至 Survivor Space。
-
Tenured Generation: 在 Survivor Space 中存在一段時間的物件會被移至 Tenured產生。
非堆疊記憶體
非堆疊記憶體包括兩個主要池:永久產生和程式碼快取。
-
永久Generation: 包含了JVM本身的所有反射數據,例如類別、方法等物件。
-
程式碼快取:包含用於編譯和儲存本機程式碼的記憶體。
監控記憶體使用情況
Java 監控和管理控制台 (JConsole) 提供圖形使用者介面來監視 Java 應用程式的各個方面,包括記憶體使用情況。 JConsole 顯示上述堆池和非堆池的記憶體使用情況,方便開發者識別潛在的記憶體問題。
其他資源
- [Heap Memory in Java](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#memorymodel)
- [非堆內存Java](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#noheapmemory)
- [使用JConsole](https://docs. oracle.com/javase/8/docs/technotes/tools/share/jconsole.html)
以上是Java 記憶體是如何建構和管理的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!