JVM参数优化

  1. 当堆需要扩展的时内存不够会报  OutOfMemeryError: Heap(堆内存溢出) ,这时可能设置堆大小参数:

            -Xms=10M  设置堆的最小大小

            -Xmx=20M   设置堆的最大大小

            -Xmn=3M   设置年轻代的大小,如果设置太大会导致老年代太小,所以官方推荐为整个堆的3/8大小

            -XX:HeapDumpPath=E:\Java\dump   设置堆转储文件的地址

            -XX:+HeapDumpOnOutOfMemoryError   当发生堆内存溢出的时候生成堆转储文件,可以通过分析堆转储文件来找到溢出的原因

    2.在经常动态生成大量Class的应用中,如使用Cglib增强,动态语言,大量Jsp文件 时,可能报OutOfMemeryError:PerGen space(方法区溢出).

            -XX:PermSize:10M    设置方法区最小大小   //红薯告诉我1.8的JDK已经把这个参数废弃了

            -XX:MaxPermsize        设置方法去最大大小    //红薯告诉我1.8的JDK已经把这个参数废弃了

    3.垃圾回收器设置:

        -XX:UseSerialGC    新生代使用Serial收集器,老年代使用Serial Old 收集器 .当JVM运行在Client模式下,默认打开.

        -XX:UseParNewGC    新生代使用ParNew收集器,老年代使用Serial Old 收集器

        -XX:UseConcMarkSweepGC  新生代使用ParNew收集器,老年代使用CMS,Serial Old,当老年代使用CMS出现Concurrent Mode Failure的时候才使用Serial Old收集器

        -XX:ParallelGCThreads  由于ParNew收集器是多线程的,默认线程数就是内核数目,可以通过这个指定垃圾收集时线程数目

        -XX:UseParallelGC     新生代使用Parallel Scavenge收集器,老年代使用Serial Old收集器,JVM运行在Server模式下,默认开启.

        -XX:UseParallelGC   新生代使用Parallel Scavenge收集器,老年代使用Parallel Old收集器

        -XX:Maxtenuing Threshold      当新手代对象经过指定的次数就能进入老年代,默认为15.

        -XX:printGCDetails  打印垃圾收集的日志



关于JVM的Client和Server模式.JVM有Client和Server模式,在Client模式下,启动比较快,垃圾收集器默认使用Serial + Serial Old.在Server模式下,启动比较慢,默认使用Parallel Scanvenge + Serial Old.Client适用于桌面应用程序,用户线程执行时间长,用户体验好.Server适用于服务器端,吞吐量高.

JVM会根据机器的内存以及CPU数量来判断使用什么模式.通过java -version可以看到JVM使用什么模式.

当然也可以通过-client以及-server来指定JVM运行的模式.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值