zoukankan      html  css  js  c++  java
  • JVM常用参数详解

     

     JVM整个堆大小=年轻代大小 + 年老代大小 + 持久代大小,在JDK1.8及之后的版本由于永久代被元空间替代,所以jdk1.8中的堆=年轻代大小 + 年老代大小。本文使用的是JDK1.8

     1、堆大小设置(XX类型参数)

    • 初始化堆内存:-XX:InitialHeapSize=1024m(-Xms1024m -简写)
    • 最大堆内存:-XX:MaxHeapSize=1024m (-Xmx1024m -简写)

     例如:-Xms1024m -Xmx1024m -XX:+PrintGCDetails

    2、-Xss:线程的堆栈大小:-Xss 默认是 512k~1024k 等价于 -XX:ThreadStackSize=512k 。该值等于零表示使用的是默认值。一般情况下无需设置

    例如:-Xms1024m -Xmx1024m -Xss512m -XX:+PrintGCDetails

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

      是 -XX:NewSize   和  -XX:MaxNewSize 参数的简写新式

    例如:-Xms1024m -Xmx1024m -Xss512m -XX:+PrintGCDetails   我们不设置他的大小,看看默认值是否符合官方比例

     结论:MaxNewSize*8/3=1024  符合

     例如:-Xms1024m -Xmx1024m -Xmn512m -Xss512m -XX:+PrintGCDetails  设置年轻代大小

     老年代被相应的减少

    4、元空间-XX:MetaspaceSize :初始化的Metaspace大小,控制元空间发生GC的阈值。GC后,动态增加或降低MetaspaceSize。在默认情况下,这个值大小根据不同的平台在12M到20M浮动。

       -XX:MaxMetaspaceSize:限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序。在本机上该参数的默认值为4294967295B(大约4096MB)

    5、-XX:NewRatio
    新生代(Eden + 2*S)与老年代(不包括永久区)的比值 例如-XX:NewRatio=4 表示新生代:老年代 = 1:4 即老年代占整个对的4/5;默认值=2

    例如:-Xms20m -Xmx20m -XX:+PrintGCDetails -XX:NewRatio=4

    6、-XX:SurvivorRatio:2个Survivor区和Eden区的比值 例如:-XX:SurvivorRatio=8 表示 两个Survivor区:Eden区=2:8 ,每个Survivor占 1/10 ;JVM默认=8

    例如:-Xms20m -Xmx20m -XX:+PrintGCDetails -XX:NewRatio=4 -XX:SurvivorRatio=8

    7、 -XX:MaxTenuringThreshold=3
    该参数主要是控制新生代需要经历多少次GC晋升到老年代中的最大阈值。在JVM中用4个bit存储(放在对象头中),所以其最大值是15。如果该值=0则表示对象在Eden区gc后不经过Survivor区直接进入老年代。如果该值等于15,并非意味着,对象必须要经历15次YGC才会晋升到老年代中。例如,当survivor区空间不够时,便会提前进入到老年代中,但这个次数一定不大于设置的最大阈值。通过控制对象进入老年代的频率,可以控制老年代内存的大小,以此控制老年代的gc次数

    查看默认值:

    F:workspaceIDEAstudyjalja-base-utils>jinfo -flag MaxTenuringThreshold 46644
    -XX:MaxTenuringThreshold=15
  • 相关阅读:
    linux环境变量(一)
    linux常用命令-ps
    linux实用小命令--查看文本内容
    postman tests常用方法
    Vue 中嵌套 Iframe,用postMessage通信 踩坑记
    [Vue warn]: Error in nextTick: "RangeError: Maximum call stack size exceeded"
    对STM32所用位带操作宏的详细剖析
    移植Modbus TCP二
    移植Modbus TCP一
    STM32位带操作
  • 原文地址:https://www.cnblogs.com/jalja/p/12057637.html
Copyright © 2011-2022 走看看