线上jvm参数

原创
2020/06/23 11:37
阅读数 102
  • 参考其他人的设置:服务器内存15G,war包启动命令如下
nohup  java   -Xms7168m -Xmx7168m -Xmn4096m -XX:SurvivorRatio=8  -XX:-UseAdaptiveSizePolicy
-XX:PretenureSizeThreshold=10485760 -XX:+UseParNewGC -XX:+UseConMarkSweepGC -jar /usr/soft/aaa.war
  • 各参数解释

-Xms7168m       堆内存分配7G
-Xmx7168m      最大堆内存7G

-Xmn4096m     新生代分配4G

-XX:SurvivorRatio=8   E区与S区比例为8:1:1,即S区是E区的1/8

-XX:-UseAdaptiveSizePolicy   取消自适应策略, 如果开启 AdaptiveSizePolicy,则每次 GC 后会重新计算 Eden、From 和 To 区的大小,计算依据是 GC 过程中统计的 GC 时间、吞吐量、内存占用量 开启 AdaptiveSizePolicy 的参数为: -XX:+UseAdaptiveSizePolicy

-XX:PretenureSizeThreshold=10485760     最大对象的阈值是10M,意思是新生对象大于等于10m时,直接进入老年代。

-XX:+UseParNewGC        新生代采用ParNew垃圾回收器

-XX:+UseConMarkSweepGC   老年代采用CMS垃圾回收器

自己的生产环境准备的参数:

JAVA_OPTS="-Xms7168m -Xmx7168m -Xmn4096m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy -XX:PretenureSizeThreshold=10485760 -XX:+UseParNewGC -XX:+UseConMarkSweepGC  -XX:CMSInitiatingOccupancyFraction=70"

参数解释

 

  • 初始化堆内存:-XX:InitialHeapSize=2048m(-Xms2048m -简写)
  • 最大堆内存:-XX:MaxHeapSize=2048m (-Xmx2048m -简写)
  • 设置年轻代大小.:-Xmn512m 
  • 线程的堆栈大小:-Xss256k:设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右.
  • 初始化永久代堆内存: -XX:PermSize=512m
  • 最大永久代堆内存:-XX:MaxPermSize
  • Eden区与Survivor区的大小比值:-XX:SurvivorRatio=8    设置年轻代中Eden区与Survivor区的大小比值.设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的 1/10
  • 年轻代与老年代的比:-XX:NewRatio=4   设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代).设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
  • 老年代垃圾收集器:CMS(Concurrent Mark Sweep)并发标记清理收集器:CMS(-XX:+UseConcMarkSweepGC)收集器在老年代使用,专门收集那些在主要回收中不可能到达的年老对象。它与应用程序并发执行,在年老代保持一直有足够的空间以保证不会发生年轻代晋升失败。
  • -XX:CMSFULLGCsBeforCompaction=5:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间会产生“碎片”,使得运行效率低。此值设置运行多少次GC以后对内训空间进行压缩、整理。
  • -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片。
  • 为了减少第二次暂停的时间,开启并行remark: -XX:+CMSParallelRemarkEnabled
  • CMS次数执行次数:默认CMS是在tenured generation沾满68%的时候开始进行CMS收集,如果你的年老代增长不是那么快,并且希望降低CMS次数的话,可以适当调高此值:-XX:CMSInitiatingOccupancyFraction=80
  •  年轻代的垃圾收集器:-XX:+UseParNewGC:设置年轻代为并行收集。可以和CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行配置,所以无需再配置此值。

 

 

 

 

 

 

 

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部