JVM内存参数设置

JVM内存常用参数设置

  • 堆内存

    最大堆内存(新生代和老年代之和的最大值) -Xmx

    最小堆内存(初始大小) -Xms

    • 新生代大小

      一般设置为整个堆内存的 1/3或者1/4

      -Xmn等效于设置了-XX:NewSize-XX:MaxNewSize相同大小

      -XX:NewSize 设置新生代的初始大小

      -XX:MaxNewSize设置新生代的最大值

      ​ 设置不同的-XX:NewSize-XX:MaxNewSize可能会导致内存震荡,以减少运行期间系统在内存申请上所花的开销

      -XX:SurvivorRadio用来设置新生代eden空间与s0空间的比例关系

      ​ s0与s1空间又分别称为from空间和to空间),并在Minor GC后会互换角色

      ​ 常用比例eden:s0:s1 = 8:1:1

    • 老年代大小

      -XX:NewRadio用来设置老年代与新生代的比例(2:1/3:1)

    -Xss 用来设置线程栈的大小

    • 方法区(持久代)

      HotSpot 虚拟机 -XX:MaxPermSize设置方法区的最大值;-XX:PermSize设置方法区的初始大小

      ​ 一般设置为64MB已经可以满足绝大部分的应用程序工作,如果依然出现方法区溢出,可以将值设置为128MB若依然不能满足,则应该考虑优化程序设计