1. JVM介紹和運行流程-CSDN博客
2. 什么是程序計數器-CSDN博客
3. java 堆和 JVM 內存結構-CSDN博客
4. 虛擬機棧-CSDN博客
5. JVM 的方法區-CSDN博客
6. JVM直接內存-CSDN博客
7. JVM類加載器與雙親委派模型-CSDN博客
8. JVM類裝載的執行過程-CSDN博客
9. JVM垃圾回收-CSDN博客
10. 垃圾回收的算法-CSDN博客
11. JVM中的分代回收-CSDN博客
12. JVM的垃圾回收器-CSDN博客
13. G1垃圾回收器-CSDN博客
14. 垃圾回收的引用區別-CSDN博客
15. JVM調優的參數設置-CSDN博客
16. JVM調優工具-CSDN博客
1. 什么是java堆
Java?堆是 Java 虛擬機(JVM)管理的內存中最大的一塊,是所有 Java 線程共享的內存區域。
它是 Java 內存模型中最核心的部分,主要用于存放對象實例和數組。
?主要特點 :
- 對象存儲:幾乎所有通過new關鍵字創建的對象實例都存儲在堆中 ?
- 共享區域:被所有線程共享,需要考慮線程安全問題 ?
- 垃圾回收主要區域:GC(Garbage Collection)主要管理堆內存 ?
- 動態分配:大小可以在JVM啟動時指定,運行時可以動態擴展(取決于配置)?
2. JVM 內存結構
現代JVM通常將堆劃分為以下幾個區域:
1. 新生代(Young Generation)
- Eden區:新創建的對象首先分配在這里??
- Survivor區(S0和S1):經過Minor GC(垃圾回收)后存活的對象會移動到Survivor區 ? ?
2. 老年代(Old Generation/Tenured Generation)
- 長期存活的對象最終會晉升到這里 ? ?
3. 元空間(Metaspace,Java 8+)
- 替代了永久代(PermGen),存儲類元數據信息
堆和棧的區別:
特性 | 堆(Heap) | 棧(Stack) |
---|---|---|
存儲內容 | 對象實例 | 基本類型變量、對象引用 |
線程共享 | 是 | 每個線程私有 |
內存分配 | 動態 | 固定大小(可通過參數調整) |
垃圾回收 | 是 | 否(隨線程結束自動釋放) |
空間大小 | 較大 | 較小 |
分配效率 | 相對較慢 | 相對較快 |
?Java堆是JVM性能調優的重要區域,合理的堆設置可以顯著影響應用程序的性能和穩定性。?