【JVM】常用的JVM配置参数

一、JVM通用配置参数

1、JVM内存配置

参数名称参数说明
-Xms初始堆内存大小
-Xmx最大堆内存大小
-Xmn新生代内存大小
-XX:MetaspaceSize初始元空间大小
-XX:MaxMetaspaceSize最大元空间大小
-XX:MaxDirectMemorySize最大直接内存大小,默认值为-Xmx大小
-XX:NewRatio=2设置老年代和新生代内存占比,默认值为2:1。
-XX:SurvivorRatio=8设置Eden区和Survivor区的比例,默认值为8:1:1(Eden:From:To)。

2、JVM其他通用配置

参数名称参数说明
-XX:StringTableSize设置字符串常量池大小,数值越大,存入字符串时Hash冲突概率越小。JDK1.6默认为1009,JDK1.7之后默认为60013,JDK1.8开始最小值为1009
-XX:MaxTenuringThreshold=15设置新生代对象经历多少次GC后晋升老年代,默认值为15
-XX:DisableExplicitGC禁用显式垃圾回收(System.gc())
-XX:+ClassUnloadingwithConcurrentMarkSince JDK 8u40,当一个类加载器的所有类都不再使用,则卸载它所加载的所有类,默认启用
-XX:+PrintCommandLineFlags打印JVM的命令行参数
-XX:PrintGCDetails打印GC详细信息
-XX:+PrintGCDateStamps打印GC时的日期时间
-XX:+PrintGCApplicationStoppedTime打印GC时应用程序的暂停时间
-XX:+PrintHeapAtGCGC前先打印堆内存信息
-XX:+PrintTenuringDistribution打印新生代对象的晋升信息
-XX:+HeapDumpOnOutOfMemoryError出现内存溢出错误时导出堆内存快照
-Xloggc:/var/gc.log配置GC日志文件的存放位置
-XX:ErrorFile=/var/hs_err_pid%p.log配置JVM错误日志的存放位置
-XX:HeapDumpPath=/temp配置堆内存快照文件的存放路径

二、JVM垃圾收集器配置

1、Serial串行垃圾收集器配置参数

参数名称参数说明
-XX:+UseSerialGC启用串行垃圾回收器

2、Parallel并行(吞吐量)垃圾收集器配置参数

参数名称参数说明
-XX:+UseParallelGC启用并行(吞吐量)垃圾收集器
-XX:MaxGCPauseMillis=200ms设置最大暂停时间目标,默认情况下,没有最大暂停时间目标。
-XX:GCTimeRatio=19设置吞吐量目标,一般将目标设置为垃圾回收总时间的 1/20 或 5%。默认值为 99,因此垃圾回收中的目标时间为 1%。(JVM会优先满足最大暂停时间目标,其次才会满足吞吐量目标,最后再考虑最小化堆内存占用大小)
-XX:+UseAdaptiveSizePolicy动态调整新生代各区域的大小和存活对象晋升阈值

3、CMS垃圾收集器配置参数

参数名称参数说明
-XX:+UseConcMarkSweepGC启用CMS并发垃圾收集器
-XX:+UseParNewGC启用ParNew垃圾收集器(一般和CMS配套使用,启用CMS垃圾收集器后会默认启用该配置)
-XX:+CMSScavengeBeforeRemark设置标记前先在新生代进行一次垃圾回收
-XX:+CMSParallelRemarkEnabled开启多线程执行重新标记
-XX:+CMSParallelInitialMarkEnabled开启多线程执行初始标记
-XX:+UseCMSCompactAtFullCollectionFull GC之后整理内存碎片
-XX:CMSInitiatingOccupancyFraction=65设置触发垃圾回收时的堆内存占比,默认值65
-XX:ConcGCThreads=threads设置并发标记时的GC线程数
-XX:CMSFullGCsBeforeCompaction=0设置经过多少次Full GC后进行空间碎片整理,默认值为0

4、G1垃圾收集器配置参数

参数名称参数说明
-XX:+UseG1GC启用G1垃圾收集器
-XX:G1HeapRegionSize=size设置 G1 区域的大小。该值将是 2 的幂,范围从 1 MB 到 32 MB。目标是基于最小的 Java 堆大小划分为大约 2048 个区域。
-XX:MaxGCPauseMillis=200设置最大暂停时间目标值,默认值为 200 毫秒。
-XX:ParallelGCThreads=n设置STW时的GC线程数,最大值为8。
-XX:ConcGCThreads=n设置并发标记时的GC线程数
-XX:InitiatingHeapoccupancyPercent=45设置触发标记的 Java 堆占用阈值,默认值是整个 Java 堆的 45%。
-XX:+UseStringDeduplicationSince JDK 8u20,开启字符串去重,当新生代回收时,G1并发检查是否有字符串重复,如果它们值一样,让它们引用同一个char[]。
-XX:G1MixedGCCountTarget=8设置混合垃圾回收次数,当触发混合垃圾回收时,将按此配置进行分批回收,默认值为8
-XX:G1HeapWastePercent=5设置允许浪费的堆内存百分比。当可回收内存百分比小于堆可浪费百分比时,Java HotSpot VM 不会再进行混合垃圾回收,默认值为 5%。
-XX:G1OldCSetRegionThresholdPercent=10设置混合垃圾回收要收集的最大老年代Region数。默认值为 Java 堆的 10%。
-XX:G1ReservePercent=10设置保持可用内存的百分比,以降低空间溢出的风险。默认值为 10%。

三、JVM参数配置示例

1、CMS垃圾收集器配置示例

8G内存服务器:

JAVA_OPTS="-Xms5G -Xmx5G -Xmn1G -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled  -XX:+UseCMSCompactAtFullCollection -XX:ErrorFile=/var/log/hs_err_pid%p.log -Xloggc:/var/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags -XX:+PrintGCApplicationStoppedTime -XX:HeapDumpPath=/temp -XX:+HeapDumpOnOutOfMemoryError"

2、G1垃圾收集器配置示例

16G内存服务器:

JAVA_OPTS="-Xms10G -Xmx10G -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200  -XX:ErrorFile=/var/log/hs_err_pid%p.log -Xloggc:/var/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags -XX:+PrintGCApplicationStoppedTime -XX:HeapDumpPath=/temp -XX:+HeapDumpOnOutOfMemoryError"
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值