JVM参数设置

1.JVM参数

1.1 参数分类

  • 标准参数
    不随JDK的版本变化而变化。比如:java -version,java -help

  • -X参数
    非标准参数。比如:java -Xint -version

  • -XX参数

-XX:[+/-] 	        -XX:+UseG1GC
-XX:<name>=<value>  -XX:InitialHeapSize=100M
  • 其他参数
-Xms100M  相当于 -XX:InitialHeapSize=100M
-Xmx100M  -Xss100

1.2 常用参数

1.2.1 堆分配参数

参数含义
-Xmn10M设置新生代区域大小为10M
-XX:NewSize=2M设置新生代初始大小为2M
-XX:MaxNewSize=2M设置新生代最大值为2M
(如果以上三个同时设置了,谁在后面谁生效。生产环境使用-Xmn即可)
-Xms128M设置java程序启动时堆内存128M(默认为物理内存1/64,且小于1G)
-Xmx256M设置最大堆内存256M,超出后会出现 OutOfMemoryError(默认为物理内存1/64,且小于1G)
(生产环境 -Xms 与 -Xmx 最好一样,避免抖动)
-Xss1M设置线程栈的大小 1M(默认1M)
-XX:ThreadStackSize,-Xss 设置在后面,以-Xss为准; -XX:ThreadStackSize设置在后面,主线程以 -Xss为准,其他线程以 -XX:ThreadStackSize为准
-XX:MinHeapFreeRatio=40设置堆空间最小空闲比例(默认40)(当-Xmx与-Xms相等时,该配置无效)
-XX:MaxHeapFreeRatio=70设置堆空间最大空闲比例(默认70)(当-Xmx与-Xms相等时,该配置无效)
-XX:NewRatio=2设置年轻代与年老代的比例为2:1
-XX:SurvivorRatio=8设置年轻代中eden区与survivor区的比例为8:1
-XX:MetaspaceSize=64M设置元数据空间初始大小(取代-XX:PermSize)
-XX:MaxMetaspaceSize=128M设置元数据空间最大值(取代之前-XX:MaxPermSize)
-XX:TargetSurvivorRatio=50设置survivor区使用率。当survivor区达到50%时,将对象送入老年代
-XX:+UseTLAB在年轻代空间中使用本地线程分配缓冲区(TLAB),默认开启
-XX:TLABSize=512k设置TLAB大小为512k
-XX:+UseCompressedOops使用压缩指针,默认开启
-XX:MaxTenuringThreshold=15对象进入老年代的年龄(Parallel是15,CMS是6)

1.2.2 垃圾回收器相关

参数含义
-XX:+UseAdaptiveSizePolicy打开自适应GC策略(该摸式下,各项参数都会被自动调整)
-XX:MaxGCPauseMillis设置最大垃圾收集停顿时间(收集器工作时会调整其他参数大小,尽可能将停顿控制在指定时间内)
-XX:+UseSerialGC在年轻代和年老代使用串行回收器
-XX:+UseParallelGC使用并行垃圾回收收集器,默认会同时启用 -XX:+UseParallelOldGC(默认使用该回收器)
-XX:+UseParallelOldGC开启老年代使用并行垃圾收集器,默认会同时启用 -XX:+UseParallelGC
-XX:ParallelGCThreads=4设置用于垃圾回收的线程数为4(默认与CPU数量相同)
-XX:+UseConcMarkSweepGC使用CMS收集器(年老代)
-XX:CMSInitiatingOccupancyFraction=80设置CMS收集器在年老代空间被使用多少后触发
-XX:+CMSClassUnloadingEnabled允许对类元数据进行回收
-XX:+UseCMSInitiatingOccupancyOnly只在达到阈值的时候,才进行CMS回收
-XX:+UseG1GC使用G1回收器
-XX:G1HeapRegionSize=16m使用G1收集器时设置每个Region的大小(范围1M - 32M)
-XX:MaxGCPauseMillis=500设置最大暂停时间(毫秒)
-XX:+DisableExplicitGC禁止显示GC的调用(即禁止开发者的 System.gc();)

1.2.3 GC日志

参数含义
-XX:+PrintGCDetails打印GC信息
-XX:+PrintGCTimeStamps打印每次GC的时间戳(现在距离启动的时间长度)
-XX:+PrintGCDateStamps打印GC日期
-XX:+PrintHeapAtGC每次GC时,打印堆信息
-Xloggc:/usr/local/tomcat/logs/gc.$$.logGC日志存放的位置

1.2.4 堆快照

参数含义
-XX:+HeapDumpOnOutOfMemoryError出现内存溢出时存储堆信息,配合 -XX:HeapDumpPath 使用
-XX:HeapDumpPath=/usr/local/tomcat/logs/oom.%t.log堆快照存储位置
-XX:+UseLargePages使用大页
-XX:LargePageSizeInBytes=4m指定大页的大小(必须为2的幂)

1.2.5 滚动日志记录

参数含义
-XX:+UseGCLogFileRotation开启滚动日志记录
-XX:NumberOfGCLogFiles=5滚动数量,命名为filename.0, filename.1 … filename.n-1, 然后再从filename.0 开始,并覆盖已经存在的文件
-XX:GCLogFileSize=8k每个文件大小,当达到该指定大小时,会写入下一个文件
-Xloggc:/gc/log日志文件位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值