




















JVM 参数是控制 Java 虚拟机运行行为的核心配置,主要用于内存分配、垃圾回收(GC)调优、日志输出、调试监控等场景。合理配置 JVM 参数能避免 OOM(内存溢出)、优化 GC 性能、提升应用稳定性。以下按功能分类梳理常用参数及配置方式。
JVM 内存模型主要包括堆(Heap)、方法区(元空间)、虚拟机栈、本地方法栈、程序计数器,其中堆和元空间是内存配置的重点(栈内存通常无需频繁调整)。
堆是 JVM 中最大的内存区域,用于存储对象实例,分为新生代(Young Generation) 和老年代(Old Generation),新生代又分为 Eden 区和两个 Survivor 区(S0、S1)。
-XX:PermSize和-XX:MaxPermSize配置(已废弃)。每个线程对应一个虚拟机栈,存储方法调用的栈帧(局部变量、操作数栈等),栈内存过小可能导致StackOverflowError(递归过深)。
JVM 提供多种垃圾回收器(如 Serial GC、Parallel GC、CMS、G1、ZGC 等),需根据应用类型(吞吐量优先 / 低延迟优先)选择。
GC 日志用于分析 GC 频率、停顿时间、内存变化等,是排查 OOM、GC 频繁等问题的关键依据。
用于在应用异常时生成诊断信息(如 OOM 时的堆快照)、启用远程调试等。
JVM 参数通过启动 Java 程序时的命令行参数指定,格式为:
示例:典型 Web 应用配置(8GB 服务器,G1 GC)
参数前缀区分:
-:标准参数(如-jar、-D);-X:非标准参数(如-Xms、-Xmx);-XX:高级参数(如-XX:+UseG1GC),这类参数可能随 JDK 版本变化。版本兼容性:部分参数在高版本 JDK 中废弃(如 CMS GC 在 JDK9 后标记为 deprecated,JDK14 移除),需根据实际 JDK 版本调整。
避免过度配置:优先保证-Xms、-Xmx、GC 类型、日志和 OOM 快照参数,其他参数在有明确性能问题时再调优(通过 JProfiler、VisualVM 等工具分析后调整)。
JVM 参数的核心是内存分配和GC 配置,需根据应用类型(Web / 批处理)、服务器资源、性能需求调整。日常开发中,至少要配置堆内存大小、GC 日志、OOM 快照参数,以便问题排查;高并发场景需进一步优化 GC 收集器和停顿时间。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。