jvm参数配置

线上JVM参数设置:

JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn700m -XX:PermSize=256m -Xss256k -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:-HeapDumpOnOutOfMemoryError "

JAVA_OPTS_EXT=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 "
export JAVA_OPTIONS="$JAVA_MEM_OPTS $JAVA_OPTS_EXT "

下面列举的这些参数是需要重点掌握的:

参数名称

含义

默认值

说明

-Xms

初始堆大小

物理内存的1/64

默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制

-Xmx

最大堆大小

物理内存的1/4

默认空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制, 为了性能我们一般会把-Xms和-Xmx设置一样大,避免年青代初始内存占满后扩充空间时内存中数据迁移导致的性能影响

-Xmn

年青代大小

物理内存的1/64

官方建议为最大堆大小的3/8,实际山可以大一点,可以设置为-Xmx的1/2

-Xss

每个线程的堆栈大小

128K

根据应用的线程所需内存大小进行调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000-5000左右,一般小的应用,如果栈不是很深,应该是128K够用的,大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。

-XX:NewSize

年青代初始化大小

2M

一般只用-Xmn设置即可

-XX:MaxNewSize

年青代最大值

32M

-XX:PermSize

持久代初始值

物理内存的1/64

堆大小为2G时一般256M

-XX:MaxPermSize

持久代最大值

物理内存的1/4

-XX:NewRatio

年青代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)

2

-XX:NewRatio=4表示年青代与年老代所占比值为1:4,年青代占整个堆栈的1/5,Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。

-XX:SurvivorRatio

Eden区与Survivor区的大小比值

8

设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年青代的1/10

-XX:TargetSurvivorRatio

设定survivor区的目标使用率

50%

Survivor区的实际使用率是50%,调整Survivor的占用比率可以提高Survivor的利用率,最大为90%

-XX:MaxTenuringThreshold

设置垃圾最大存活阀值

15

如果设置为0的话,则年青代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年青代对象会在Survivor区进行多次复制,这样可以增加对象再年青代的存活时间,增加在年青代即被回收的概率,该参数只有在串行GC时才有效

-XX:+UseParallelGC

选择垃圾收集器为并行收集器

 

选择垃圾收集器为并行收集器.此配置仅对年青代有效.即上述配置下,年青代使用并发收集,而年老代仍旧使用串行收集

-XX:ParallelGCThreads

并行收集器的线程数

 

此值最好配置与处理器数目相等,同样适用于CMS收集器(运行在老年代)

-XX:+UseParNewGC

设置年青代为并行收集

 

可与CMS收集同时使用,JDK5.0以上JVM会根据系统配置自行设置,所以无需再设置此值

-XX:+UseParallelOldGC

设置年老代为并行收集

 

JDK6.0支持对年老代并行收集

-XX:MaxGCPauseMillis

 

 

设置每次年青代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年青代大小,以满足此值,一般设置为100

-XX:+UseConcMarkSweepGC

设置年老代为并发收集

默认不启用

测试中配置这个以后,-XX:NewRatio=4的配置失效了,所以此时年青代大小最好用-Xmn设置

-XX:+CMSClassUnloadingEnabled

 

 

设置年老代CMS收集器对持久代进行垃圾回收(CMS收集器默认不会对持久代进行垃圾回收,如果希望对持久代进行垃圾回收,需要设置此参数)

-XX:CMSInitiatingPermOccupancyFraction

设置Perm Gen使用到达多少比率时触发CMS收集

jdk5默认68%,jdk6默认92%

 

-XX:CMSInitiatingOccupancyFraction

设置old区使用到达多少比率时触发CMS收集

Jdk5默认68%,jdk6默认92%

 

-XX:-HeapDumpOnOutOfMemoryError

JVM会在遇到OutOfMemoryError时拍摄一个“堆转储快照”,并将其保存在一个文件中

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值