GC常用参数汇总

1.与串行回收器相关

-XX:+UseSerialGC 在新生代和老年代使用串行GC
-XX:SurvivorRatio 设置eden区和survivior区的大小比例
-XX:PretenureSizeThreshold 设置大对象进入老年代的阈值。当对象的大小超过这个值时直接进入老年代分配。
-XX:MaxTenuringThreshold 设置对象进入老年代的年龄最大值。每一次Minor GC后,对象的年龄就加1。任何大于这个年龄的对象,一定会进入老年区

2.与并行GC相关的参数

-XX:+UseParNewGC 新生代使用并行收集器
-XX:+UseParallelOldGC 老年代使用并行回收收集器
-XX:ParallelGCThreads 设置用于垃圾回收的线程数。通常情况下可以与CPU数量相等,当CPU数较多时,设置相对较小也是合理的。
-XX:MaxGCPauseMills 设置最大垃圾停顿时间。大于0的整数,收集器在工作时,会调整java堆大小或其他一些参数,尽可能把停顿时间控制在MaxGCPauseMills以内
-XX:GCTimeRatio 设置吞吐量大小,范围0~100.假设GCTimeRatio=n,那么系统花费不超过1/(1+n)的时间用于垃圾收集。
-XX:+UseAdaptiveSizePolicy 打开自适应GC策略。这种模式下,新生代的大小,eden和survivior的比例,晋升老年代的对象年龄等参数会被自动调整,已达到在堆的大小、吐吞量和停顿时间的平衡。

3.与CMS回收器相关

-XX:+UseConcMarkSweepGC 新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:ParallelCMSThreads 设置CMS线程数量
-XX:CMSInitiatingOccupancyFraction 设置CMS收集器在老年代空间使用多少时触发,jdk1.5默认68%;1.6 默认92%
-XX:+UseCMSCompactAtFullCollection 设置CMS收集器在完成垃圾回收后是否进行一次内存碎片整理
-XX:+CMSFullGCsBeforeCompaction 设置进行多少次CMS垃圾回收后,进行一次内存压缩
-XX:+CMSClassUnloadingEnabled 运行对类元数据区进行回收
-XX:CMSInitiatingPermOccupancyFraction 当永久代占用达到这一百分比时,启用CMS (前提CMSClassUnloadingEnabled启用)
-XX:+UseCMSInitiatingOccupancyOnly 表示只在达到阈值的时候进行CMS回收
-XX:CMSIncrementalMode 使用增量模式,比较适合单CPU。在1.8被废弃,1.9被彻底移除

4.与G1回收器相关的参数

-XX:+UseG1GC 启用G1回收器
-XX:MaxGCPauseMills 设置最大垃圾收集停顿时间
-XX:MaxGCPauseIntervalMills 设置停顿间隔时间

5.TLAB相关

-XX:+UseTLAB 开启TLAB分配
-XX:+PrintTLAB 打印TLAB相关分配信息
-XX:TLABSize 设置TLAB大小
-XX:ResizeTLAB 自动调整TLAB大小

6.GC日志

-XX:+PrintGC 打印GC日志
-XX:+PrintGCDetails 详细GC日志
-XX:+PrintGCTimeStamps GC发生的时间,为虚拟机启动后的时间偏移量
-XX:+PrintGCTimeApplicationConCurrentTime 应用程序的执行时间
-XX:+PrintGCTimeApplicationStopTime 应用程序由于GC而产生的停顿时间
-Xloggc 日志文件的输出路径

7.堆大小设置参数

-Xss 是指设定每个线程的栈大小。一般设置不超过1M
-XX:PermSize 初始永久代大小
-XX:MaxPermSize 最大永久代大小
-XX:MaxDirectMemorySize=4m 最大直接内存
-XX:MaxMetaspaceSize最大元空间
-XX:NewRatio 新生代与老年代的比例

8.其他

-XX:+DisableExplicitGC 禁用显示GC
-XX:+ExplicitGCInvokesConcurrent 使用并发GC处理显示GC
-verbose:class 跟踪类的加载和卸载
-XX:+HeapDumpOnOutOfMemoryError 内存溢出时,导出堆信息
-XX:HeapDumpPath 导出堆信息路径

 

<think>好的,我需要回答用户关于JVM调优常用参数的问题。用户已经提供了四个引用,我需要仔细分析这些引用中的信息,并结合用户之前的问题来组织答案。首先,用户之前的问题是关于Java面试常见问题,其中涉及了JVM调优的常用参数,现在用户进一步询问具体的参数列表及作用。根据引用[1]提到JVM调优参数汇总,引用[4]详细列出了几个关键参数如-Xms、-Xmx等。引用[3]和[2]也提到了调优方法和工具,但用户现在需要的是参数列表,所以重点应放在引用[1]和[4]上。 接下来,我需要整理这些参数,并分类说明。常见的参数可以分为堆内存设置、新生代配置、垃圾回收器选择、其他优化参数等。例如,-Xms和-Xmx控制堆的初始和最大大小,这在引用[4]中被提到。新生代相关的参数如-XX:NewSize和-XX:SurvivorRatio也需要解释。此外,垃圾回收器相关的参数如-XX:+UseG1GC,以及辅助参数如-XX:+PrintGCDetails,这些可能在引用[1]或[2]中有涉及。 需要注意的是,用户要求使用中文回答,并且数学表达式要用$...$格式。例如,在解释SurvivorRatio时,可能需要用比例表达式,如Eden:S0:S1=8:1:1,但这里不需要数学公式,所以可能不需要使用LaTeX。不过如果有涉及计算的地方,比如堆大小的比例,可以适当使用。 另外,用户希望生成相关问题,我需要根据JVM调优的主题,提出几个相关的问题,比如如何选择垃圾回收器、调优的步骤、如何分析内存泄漏等。这些问题应涵盖调优的不同方面,帮助用户进一步学习。最后,确保回答结构清晰,分点列出参数,每个参数的作用和示例都要明确。同时,正确添加引用标识,例如参数说明来自引用[4]的,在末尾添加[^4],来自引用[1]的添加[^1]等。需要检查引用是否准确,避免错误归属。 可能遇到的挑战是确保所有重要参数都被涵盖,并且分类合理。例如,除了堆和新生代参数,还有元空间、垃圾回收日志等参数也需要包括进去。需要参考提供的引用,确保没有遗漏关键点,同时保持回答简洁易懂。</think>### JVM调优常用参数列表及作用 以下是JVM调优的核心参数及其作用分类整理,结合性能优化实践和内存管理需求[^1][^4]。 --- #### **1. 堆内存设置** - **`-Xms`** - **作用**:设置JVM初始堆大小(默认物理内存的1/64)。 - **示例**:`-Xms512m`(初始堆512MB)。 - **`-Xmx`** - **作用**:设置JVM最大堆大小(默认物理内存的1/4)。 - **示例**:`-Xmx2048m`(最大堆2GB)。 - **建议**:`-Xms`和`-Xmx`通常设为相同值,避免堆动态扩容导致性能波动[^4]。 --- #### **2. 新生代(Young Generation)配置** - **`-XX:NewSize`** / **`-XX:MaxNewSize`** - **作用**:设置新生代初始大小和最大大小。 - **`-XX:NewRatio`** - **作用**:设置老年代与新生代的比例(默认2,即老年代占2/3,新生代占1/3)。 - **示例**:`-XX:NewRatio=1`(老年代和新生代各占50%)。 - **`-XX:SurvivorRatio`** - **作用**:设置Eden区与Survivor区的比例(默认8,即Eden:S0:S1=8:1:1)。 - **示例**:`-XX:SurvivorRatio=4`(Eden:S0:S1=4:1:1)[^4]。 --- #### **3. 垃圾回收器选择** - **`-XX:+UseG1GC`** - **作用**:启用G1垃圾回收器(适合大堆、低延迟场景)。 - **`-XX:+UseParallelGC`** - **作用**:启用并行垃圾回收器(吞吐量优先)。 - **`-XX:+UseConcMarkSweepGC`** - **作用**:启用CMS垃圾回收器(低停顿时间,已废弃,建议改用G1)。 --- #### **4. 元空间(Metaspace)配置** - **`-XX:MetaspaceSize`** - **作用**:设置元空间初始大小(默认约21MB)。 - **`-XX:MaxMetaspaceSize`** - **作用**:设置元空间最大大小(默认无限制,建议根据应用设置)。 --- #### **5. 其他关键参数** - **`-XX:+HeapDumpOnOutOfMemoryError`** - **作用**:在OOM时自动生成堆转储文件(用于分析内存泄漏)。 - **`-XX:HeapDumpPath`** - **作用**:指定堆转储文件路径。 - **示例**:`-XX:HeapDumpPath=/logs/heapdump.hprof`。 - **`-XX:+PrintGCDetails`** - **作用**:打印GC详细日志(用于分析GC频率和停顿时间)。 - **`-Xss`** - **作用**:设置单个线程的栈大小(默认1MB,需根据线程数调整)[^1][^4]。 --- #### **示例配置** ```shell java -Xms2g -Xmx2g -XX:NewRatio=1 -XX:SurvivorRatio=4 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar ``` - **说明**:设置堆大小为2GB,新生代与老年代各占50%,Eden区占比80%,使用G1回收器并限制最大GC停顿时间为200ms[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值