JVM配置参数

JVM配置参数

      笔者将所有JVM参数整合并仔细梳理后,将我们无法感知的参数剔除,提取出较有用的参数。如果想查看所有GC配置参数,可在容器中添加参数 -XX:+PrintFlagsFinal 启动容器即可查阅。

堆配置
参数说明
-Xms64M初始堆占用,InitialHeapSize(初始堆占用) = NewSize(初始化新生代占用) + OldSize(初始化老年代占用),默认64M
-Xmx150M堆最大占用,MaxHeapSize,默认150M
-Xmn32M新生代最大占用,MaxNewSize,默认32M ;NewSize(初始新生代大小)默认等于MaxNewSize
auto compute老年代大小,OldSize(老年代大小) , 默认等于 InitialHeapSize(初始堆占用) - MaxNewSize(新生代最大占用),自动计算,无需配置 ;
栈配置
参数说明
-Xss1M整体栈大小,与ThreadStackSize选其一即可,整体栈大小一般2M足够,默认使用-XX:ThreadStackSize,不对总体大小做限制,对单个线程栈做限制
-XX:ThreadStackSize=16k每个线程的栈大小,一般局部变量数组占用绝大部分空间,默认值:16k
GC配置
参数说明
-XX:+UseSerialGCSerial + Serial Old,CS下的默认值
-XX:+UseParNewGCParNew + Serial Old
-XX:+UseConcMarkSweepGCParNew + CMS - Serial Old(后备收集器)
-XX:+UseParallelGCParallel Scavenge,BS下的默认值(java 7
-XX:+UseParallelOldGCParallel Scavenge,BS下的默认值(java 7
-XX:+UseG1GCG1 BS下的默认值(java 9)
详细配置
参数说明
-XX:SurvivorRatio=8eden和survivor的存活比,默认是1:8 (survivor : eden)
-XX:PretenureSizeThreshold=0直接晋升到老年代的对象大小,单位为M,默认无限制
-XX:MaxTenuringThreshold=15晋升到老年代的对象年龄,每次Minor GC,survivor中对象的年龄+1,为0时移除survivor
-XX:UseAdaptiveSizePolicy=false动态调整java堆中各个区域的大小及进入老年代的年龄。Parallel Scavenge时生效
-XX:HandlePromotionFailure=false是否允许分配担保失败,老年代不足应付新生代要移动过来的对象时的风险控制策略,(JDK 6 Update 24后已失效,默认打开)
-XX:ParallelGCThreads=0设置并行GC时进行内存回收的线程数
-XX:GCTimeRatio=99GC时间占总时间的比率,默认99,即允许1%的GC时间。 Parallel Scavenge时生效(选其一)
-XX:MaxGCPamuseMillis=0设置GC的最大停顿时间。 Parallel Scavenge时生效(选其一)
-XX:CMSInitiatingOccupancyFraction=68设置CMS收集器在老年代空间被使用多少后出发垃圾收集。 CMS时生效
-XX:UseCMSCompactAtFullCollection=false设置CMS收集器在完成垃圾收集后是否要尽心工艺瓷内存碎片整理。 CMS时生效
-XX:CMSFullGCsBeforeCompaction=0设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。 CMS时生效
-XX:PermSize=10M方法区默认大小(已失效)
-XX:MaxPermSize=10M方法区最大大小(已失效)
调试专用配置
参数说明
-XX:+PrintGCDetails打印gc详情
-XX:+PrintGCApplicationStoppedTime打印GCStop The World时间
-XX:+PrintGCDateStamps打印时间戳
-XX:+PrintReferenceGC打印
-Xloggc:gclog.log将日志存进gclog.log
-XX:+HeapDumpOnOutOfMemoryErrordump出当前的内存堆转储快照
-XX:HeapDumpPath=E:\jvmdump出当前的内存堆转储快照的url
-XX:+PrintFlagsFinal启动打印JVM所有参数,包括默认参数
-Dcom.sun.management.jmxremote开启JMX管理功能,启动VisualVM支持,早于java6的平台
JEE容器中配置参数方法,以tomcat为例
  • 在catalina.bat中,开头添加 set “JAVA_OPTS=-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:+PrintFlagsFinal”
  • 在catalina.sh中,开头添加 JAVA_OPTS="-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:+PrintFlagsFinal"
堆栈设定比例
  • JVM堆栈的设定比例一般采用默认设定比例即可,是较为合理的。当系统出现内存溢出或其它问题时,可根据具体情况调配。
    在这里插入图片描述

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值