JVM常用的配置参数整理

-XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收
-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩
-XX:NewRatio:新生代和老年代的比
-XX:ParallelCMSThreads:设定CMS的线程数量
-XX:ParallelGCThreads:设置用于垃圾回收的线程数
-XX:SurvivorRatio:设置eden区大小和survivior区大小的比例
-XX:+UseParNewGC:在新生代使用并行收集器
-XX:+UseParallelGC :新生代使用并行回收收集器
-XX:+UseParallelOldGC:老年代使用并行回收收集器
-XX:+UseSerialGC:在新生代和老年代使用串行收集器
-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理
-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收
-Xms:设置堆的最小空间大小。
-Xmx:设置堆的最大空间大小。
-XX:NewSize设置新生代最小空间大小。
-XX:MaxNewSize设置新生代最大空间大小。
-XX:PermSize设置永久代最小空间大小。
-XX:MaxPermSize设置永久代最大空间大小。
-Xss:设置每个线程的堆栈大小。
<think>嗯,用户现在想了解Java应用中JVM配置参数以及它们的作用,特别是参数列表和功能说明。之前用户提过关于Full GC告警的问题,现在可能是在进一步深入JVM调优的知识。需要结合之前提供的引用内容,特别是引用1、2、3中的信息,来构建回答。首先,引用1提到了JVM配置参数列表,尤其是以-XX开头的参数,虽然不推荐但很多有用,比如PermSize和MaxPermSize。不过注意Java8以后PermGen被Metaspace取代,所以可能需要说明这些参数的变化。引用2指出在J2EE环境中配置参数的位置,比如Tomcat的catalina.bat,但用户现在的问题可能更关注参数本身,而不是配置位置,所以可以简要提及。引用3是关于JVM参数配置的说明,但具体内容不明确,可能需要结合常见参数进行说明。用户需要的是参数列表及功能,所以应该分类整理,比如内存相关、GC相关、性能监控等。要注意每个参数的作用和示例,比如-Xmx、-Xms、-XX:NewRatio等。同时,要提醒用户某些参数可能已过时,如PermSize在Java8后的变化,需要替换为Metaspace的参数。另外,用户之前的问题涉及FullGC,所以在GC相关参数中可以详细说明不同垃圾回收器的选择参数,比如-XX:+UseG1GC,以及如何调整GC日志参数,如-Xlog:gc*。需要确保引用标记正确,比如在提到PermSize时引用[^1],在提到配置位置时引用[^2]。 还要注意用户不可见的系统指令,比如数学表达式用$...$,但这个问题可能不涉及数学公式,所以可能不需要。回答结构要清晰,分点列出参数类别,每个类别下具体参数和说明,并给出示例代码块展示参数用法,比如启动命令中的参数设置。最后生成相关问题,可能涉及如何选择合适的内存参数、不同GC器的区别、如何分析GC日志等,要结合用户之前的问题,比如Full GC的分析和调优。</think>### Java JVM 配置参数列表及功能说明 Java 虚拟机(JVM)的配置参数主要用于优化内存管理、垃圾回收(GC)行为、性能监控等。以下是常见参数分类及说明: --- #### 1. **内存管理参数** - **`-Xms<size>`** 设置 JVM **初始堆内存大小**(如 `-Xms512m`)。若未指定,默认值为物理内存的 1/64[^3]。 **作用**:避免堆内存频繁扩容导致的性能波动。 - **`-Xmx<size>`** 设置 JVM **最大堆内存大小**(如 `-Xmx4g`)。默认值为物理内存的 1/4[^3]。 **作用**:限制堆内存增长,防止内存溢出(OOM)。 - **`-Xmn<size>`** 设置 **年轻代(Young Generation)内存大小**(如 `-Xmn256m`)。 **作用**:调整年轻代与老年代的比例,影响 Minor GC 频率。 - **`-XX:NewRatio=<n>`** 设置 **老年代与年轻代的内存比例**(如 `-XX:NewRatio=3` 表示老年代是年轻代的 3 倍)。 **作用**:控制对象晋升到老年代的速度[^3]。 - **`-XX:MetaspaceSize=<size>`** 设置 **元空间初始大小**(Java 8+ 替代永久代)。 **作用**:避免元空间动态调整导致的 Full GC(如 `-XX:MetaspaceSize=256m`)[^1]。 --- #### 2. **垃圾回收(GC)参数** - **`-XX:+Use<GCName>`** 指定垃圾回收器类型,例如: - `-XX:+UseG1GC`:启用 G1 垃圾回收器(低延迟场景)。 - `-XX:+UseParallelGC`:启用 Parallel GC(高吞吐量场景)。 - `-XX:+UseZGC`:启用 ZGC(超大堆内存场景)[^1]。 - **`-XX:MaxGCPauseMillis=<ms>`** 设置 GC 的 **最大停顿时间目标**(如 `-XX:MaxGCPauseMillis=200`)。 **作用**:G1 或 ZGC 根据此值调整回收策略[^1]。 - **`-XX:+PrintGCDetails`** 输出 **GC 详细日志**,记录每次 GC 的内存变化和耗时。 **作用**:用于分析 GC 频率和性能瓶颈[^3]。 - **`-Xlog:gc*:file=gc.log`** 将 GC 日志输出到文件(JDK 9+),支持高级日志过滤(如 `-Xlog:gc*=debug`)[^1]。 --- #### 3. **性能监控与调试参数** - **`-XX:+HeapDumpOnOutOfMemoryError`** 在内存溢出时生成 **堆转储文件**(默认路径为当前目录)。 **作用**:结合 MAT 工具分析内存泄漏[^3]。 - **`-XX:HeapDumpPath=<path>`** 指定堆转储文件的保存路径(如 `-XX:HeapDumpPath=/dump/heap.hprof`)。 - **`-XX:+FlightRecorder`** 启用 Java Flight Recorder(JFR),用于实时性能监控。 **示例**:`jcmd <pid> JFR.start duration=60s filename=recording.jfr`[^1]。 --- #### 4. **类加载与编译参数** - **`-XX:+TraceClassLoading`** 跟踪类的加载过程,输出类加载日志。 **作用**:诊断类冲突或加载失败问题。 - **`-XX:CompileThreshold=<n>`** 设置方法被 JIT 编译的 **调用阈值**(默认 10000)。 **作用**:优化热点代码的编译时机。 --- #### 示例:启动命令中的参数配置 ```bash java -Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -Xlog:gc*:file=gc.log -jar myapp.jar ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值