JVM 与性能

分类:Java 核心 · 更新于 2026-09

JVM 让 Java 实现"一次编译,到处运行"。理解内存区域与垃圾回收,是性能调优的前提。

一、内存区域

  • 堆:对象实例所在,GC 主战场,分新生代(Eden/Survivor)与老年代。
  • 方法区/元空间:类信息、常量等。
  • 虚拟机栈:每个线程私有,存放栈帧(局部变量、操作数栈)。

二、垃圾回收

G1(Java 9+ 默认)把堆切成 Region,优先回收垃圾最多的区域,并可设停顿目标;ZGC 用染色指针+读屏障把停顿压到亚毫秒级,适合大堆与低延迟场景。

java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 App
java -XX:+UseZGC App

三、调优思路

不要盲目调参。先用 -Xlog:gc* 采集 GC 日志,看频率、停顿、是否频繁 Full GC,再针对性调整堆大小与回收器。频繁 Full GC 往往暗示内存泄漏或堆过小。

← 返回首页