博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM参数优化
阅读量:5836 次
发布时间:2019-06-18

本文共 1421 字,大约阅读时间需要 4 分钟。

hot3.png

JVM毕竟不是智能的,所以我们要根据实际的运行机器,实际业务等情况选择合适的参数去优化JVM下面我讲一些简单的参数列下来,这些参数的使用需要先理解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使用什么模式.

194240_d9sW_2250599.png

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

        

        

                

    

转载于:https://my.oschina.net/u/2250599/blog/409119

你可能感兴趣的文章
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
【数据库】
查看>>
WindowManager.LayoutParams 详解
查看>>
Android的Aidl安装方法
查看>>
Linux中rc的含义
查看>>
实现跨交换机VLAN间的通信
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>