JVM参数详解

作者: wiflish 分类: 技术 发布时间: 2014-07-24 18:02 ė 6没有评论

-Xms1G
设置堆的最小值,不能超过物理内存

-Xmx2G
设置堆的最大值,不能超过物理内存

-Xmn1G
设置新生代堆的大小,老年代=Xmx-Xmn-永久代

-XX:+HeapDumpOnOutOfMemoryError
设置在jvm出现内存溢出的异常时导出当前的内存堆转储快照(hprof文件),用于分析内存。
备注说明: +表示打开开关;-表示关闭开关

-XX:PermSize=128M
设置“永久代”内存区的最小值,JDK1.8以前有效

-XX:MaxPermSize=256M
设置“永久代”内存区的最大值,JDK1.8以前有效

-XX:MetaspaceSize=128M
默认自动扩展,设置MetaSpace内存区的最小值,JDK1.8新增,替换“永久代”

-XX:MaxMetaspaceSize=256M
默认自动扩展,设置MetaSpace内存区的最大值,JDK1.8新增,替换“永久代”

-Xoss256M
设置本地方法栈大小,在HotSpot虚拟机中无效(HotSpot不区分虚拟机栈跟本地方法栈)

-Xss256M
设置虚拟机栈大小。

-XX:+PrintGCDetails
设置虚拟机在发送垃圾回收行为后打印回收日志。

垃圾收集器相关参数

-XX:PretenureSizeThreshold=1M
设置大于这个设置阀值(这里设置为1M)的对象直接在老年代分配内存。

-XX:MaxTenuringThreshold=10
设置从新生代移动到老年代的年龄阀值,默认为15,当对象在新生代中经过多次MinorGC之后,达到这个设定值后,就将对象移动到老年代。这里还有一个动态判定的概念,如果Survivor空间中相同(或者大于)年龄的所有对象大小之和大于Survivor空间的一半,则这些对象全部移动到老年代。

-XX:+UseSerialGC
设置使用Serial(新生代收集器)+ Serial Old(老年代收集器)组合进行内存回收,在client模式下运行时,默认使用此垃圾收集器

-XX:+UseParNewGC
设置使用 ParNewGC(新生代收集器) + Serial Old(老年代收集器)组合进行内存回收

-XX:+UseConcMarkSweepGC
设置使用 ParNewGC + CMS(老年代收集器) + Serial Old组合进行内存回收, Serial Old作为备用收集器(当CMS收集器出现Concurrent Mode Failure时使用)

-XX:+UseParallelGC
设置使用 Parallel Scavenge(新生代收集器) + Serial Old组合进行内存回收,在server模式下运行时(部署到服务器),默认使用次垃圾收集器。

-XX:+UseParallelOldGC
设置使用 Parallel Scavenge(新生代收集器) + Parallel Old组合进行内存回收

-XX:SurvivorRatio=8
设置新生代的Eden区于Survivor去的空间比为8:1,新生代有Eden区、from Survivor区、to Survivor区,Survivor区的大小一样。

-XX:+UseAdaptiveSizePolicy
设置开启动态调整java堆中各个区域的大小以及进入老年代的年龄

-XX:+HandlePromotionFailure
设置开启分配担保失败,在6.0_24版本中已移除该参数。
注:在一次理想化的minor gc中,Eden和First Survivor中的活跃对象会被复制到Second Survivor。
然而,Second Survivor不一定能容纳下所有从E和F区copy过来的活跃对象。
为了确保minor gc能够顺利完成,GC需要在年老代中额外保留一块足以容纳所有活跃对象的内存空间。
这个预留操作,就被称之为新生代收集担保(New Generation Guarantee)。如果预留操作无法完成时,仍会触发major gc(full gc)。

-XX:ParallelGCThreads=10
设置并行GC时进行内存回收的线程数,默认值为CPU的数目,一般不需要修改此参数。

-XX:GCTimeRatio=99
设置GC时间占总时间的比率,计算方式:1 / (1+GCTimeRatio) = GC占总时间的比率。默认值99,表示GC占总时间的1%,仅在使用Parallel Scavenge收集器时有效

-XX:MaxGCPauseMills=100
设置GC的最大停顿时间,仅在使用Parallel Scavenge收集器时有效

-XX:+PrintGCTimeStamps
设置打印GC时间戳(以JVM启动时间为开始时间)

-XX:CMSInitiatingOccupancyFraction=68
设置CMS收集器在老年代空间被占用多少后触发垃圾收集,默认值为68%,仅在使用CMS收集器时有效

-XX:+UseCMSCompactAtFullCollection
设置CMS收集器在完成内存回收后要进行一次内存碎片整理,仅在使用CMS收集器时有效

-XX:CMSFullGCsBeforeCompaction=10
设置在CMS收集器在进行10次内存回收后再启动一次内存碎片整理,仅在使用CMS收集器时有效

本文出自 Wiflish's Blog,转载时请注明出处及相应链接。

本文永久链接: http://wiflish.fyard.com/archives/286

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部