永久代(PermGen)→ 元空间(Metaspace)
1.7:永久代位于堆内存,固定大小,容易 OOM
bash
-XX:PermSize=64m
-XX:MaxPermSize=128m # OOM: PermGen space 频发
1.8:元空间使用本地内存,自动扩容
bash
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m # 受物理内存限制,不易 OOM
优势:
1.内存管理更高效 :元空间由 OS 管理,GC 压力降低
2.容量更灵活 :自动扩容,无需手动调优
3.类加载更快:元数据结构优化
默认垃圾回收器:CMS → G1
1.7:默认使用 Parallel GC,CMS 作为备选但需要手动开启
bash
-XX:+UseConcMarkSweepGC # 需手动指定
1.8:默认使用 G1 GC
bash
# 无需参数,默认启用
-XX:+UseG1GC # 可显式指定
G1 优势 :
1.Region 分区 :将堆划分为多个 Region,分代概念弱化
2.可预测停顿 :通过 -XX:MaxGCPauseMillis=200 设定目标停顿时间
3.并发回收 :标记-整理算法,减少 Full GC 频率
4.性能:大堆场景(>4G)吞吐量提升 20-30%
JIT 编译器优化
1.8:引入 Tiered Compilation(分层编译)
1.C1 编译器 :快速生成代码,启动速度提升
2.C2 编译器 :深度优化,峰值性能更高
3.智能切换:根据代码热度自动选择编译层级