JVM调优之参数优化

一、先看一段JVM参数配置:

  • -XX:+UseCompressedOops
    -Xms3096m
    -Xmx3096m
    -XX:PermSize=512
    -XX:MaxPermSize=1024m
    -XX:NewSize=2048m
    -XX:MaxNewSize=2048m
    -XX:SurvivorRatio=8

    -verbose:gc
    -Xloggc:/data/dataLogs/gc/gc.log
    -XX:+PrintGCDateStamps
    -XX:+PrintGCDetails

    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=70
    -XX:+UseCMSCompactAtFullCollection
    -XX:+CMSClassUnloadingEnabled
    -XX:+DisableExplicitGC

    -XX:+HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=/data/dataLogs/dump

参数介绍:
-XX:+UseCompressedOops 这个可以压缩指针,起到节约内存占用的新参数。
通常64位JVM消耗的内存会比32位的大1.5倍,这是因为对象指针在64位架构下,长度会翻倍(更宽的寻址)。
对于那些将要从32位平台移植到64位的应用来说,平白无辜多了1/2的内存占用,从JDK1.6开始支持。
-Xms 设置JVM初始堆内存。
-Xmx 设置JVM最大堆内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn:设置年轻代大小。
-Xss:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为128k.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
-XX:MaxTenuringThreshold:设置垃圾最大年龄.如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率。

-XX:MaxPermSize 设置持久代初始值。
-XX:MaxPermSize 设置持久代最大值。
-XX:NewSize 设置年轻代初始值。
-XX:MaxNewSize 设置年轻代最大值。
XX:NewRatio:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代).设置为2,则年轻代与年老代所占比值为1:2,年轻代占整个堆栈的1/3。
-XX:SurvivorRatio:设置年轻代中Eden区与Survivor区的大小比值.设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10。

-verbose:gc 表示输出虚拟机中GC的详细情况。
-Xloggc 设置gc日志路径。
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)。
-XX:+PrintGCDetails 输出GC的详细日志。

-XX:+UseConcMarkSweepGC CMS收集,设置年老代为并发收集。
-XX:+UseCMSCompactAtFullCollection 打开内存空间的压缩和整理,在Full GC后执行。可能会影响性能,但可

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值