生产上有哪些常用JVM的调优参数吗?

文章详细阐述了Java虚拟机的堆内存配置,包括最大堆大小(Xmx),初始堆大小(Xms),年轻代大小(Xmn),线程栈大小(Xss),持久代大小(MaxPermSize)以及年轻代与年老代的比例。同时,讨论了垃圾收集器的配置,如使用并行收集器(UseParallelGC)和并发收集器(UseConcMarkSweepGC),并涉及了GC日志打印选项(PrintGC和PrintGCDetails)。

堆栈配置相关


java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:MaxPermSize=16m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=0

-Xmx3550m: 最大堆大小为3550m。

-Xms3550m: 设置初始堆大小为3550m。

-Xmn2g: 设置年轻代大小为2g。

-Xss128k: 每个线程的堆栈大小为128k。

-XX:MaxPermSize: 设置持久代大小为16m

-XX:NewRatio=4: 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。

-XX:SurvivorRatio=4: 设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

-XX:MaxTenuringThreshold=0: 设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。

2)垃圾收集器相关


-XX:+UseParallelGC-XX:ParallelGCThreads=20-XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection:

-XX:+UseParallelGC: 选择垃圾收集器为并行收集器。

-XX:ParallelGCThreads=20: 配置并行收集器的线程数

-XX:+UseConcMarkSweepGC: 设置年老代为并发收集。

-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

-XX:+UseCMSCompactAtFullCollection: 打开对年老代的压缩。可能会影响性能,但是可以消除碎片

3)辅助信息相关


-XX:+PrintGC-XX:+PrintGCDetails

-XX:+PrintGC 输出形式:

[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]

-XX:+PrintGCDetails 输出形式:

[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs

<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]。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值