JVM调优

作者: 松松木tell | 来源:发表于2022-12-06 20:16 被阅读0次

    这是一段jvm 参数
    -server -Xms8192m -Xmx8192m -Xmn3072m -XX:PermSize=256m -Xss256k -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:-OmitStackTraceInFastThrow -XX:HeapDumpPath=/app/springMy

    -Xms:设置JVM初始内存。(此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。)
    -Xmx:设置JVM最大可用内存。
    -Xmn:设置年轻代大小。(Xms *3/8)

    整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
    持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

    -XX:PermSize设置非堆内存初始值
    -Xss: 设置每个线程的堆栈大小。

    设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右

    -XX:+HeapDumpOnOutOfMemoryError
    -XX:+UseConcMarkSweepGC 打开并发收集器
    -XX:+CMSParallelRemarkEnabled
    -XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开启对年老代的压缩
    -XX:LargePageSizeInBytes=128m
    -XX:+UseFastAccessorMethods
    -XX:+UseCMSInitiatingOccupancyOnly
    -XX:CMSInitiatingOccupancyFraction=70
    XX:HeapDumpPath=/app/springMy

    -XX:-OmitStackTraceInFastThrow 省略异常栈信息从而快速抛出

    JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用Fast Throw方式来抛出异常,而异常Trace即详细的异常栈信息会被清空,这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息
    参考:https://www.jianshu.com/p/cc1bd35466cb

    相关文章

      网友评论

          本文标题:JVM调优

          本文链接:https://www.haomeiwen.com/subject/yadtiqtx.html