东东
发布于 2022-11-11 / 72 阅读 / 0 评论 / 0 点赞

JVM参数

堆内存

最大小堆

-Xms<heap size>[unit]
  1. 默认值为物理内存的1/64
  2. 一般小于1G
  3. 当空余堆内存不足40%时,JVM会自动增大直到最大堆限制

最大堆

-Xmx<heap size>[unit]
  1. 默认值为物理内存的1/4
  2. 一般小于1G
  3. 当空余堆内存超过70%时,JVM会自动减少直到最小堆限制

新生代大小

-Xmn
  1. 新生代大小一般为整个堆的3/8

新老年代比例

-XX:NewRatio=1
  1. GC调优策略要尽可能将对象留在新生代
  2. 该值一般不需要设置

元空间大小

-XX:MetaspaceSize=N //设置 Metaspace 的初始(和最小大小)
-XX:MaxMetaspaceSize=N //设置 Metaspace 的最大大小,如果不指定大小的话,随着更多类的创建,虚拟机会耗尽所有可用的系统内存。

调优策略

最大堆和最小堆

  1. 一般情况,最大堆和最小堆配置一样
  2. 避免垃圾回收之后重新分隔堆区造成资源浪费

新生代和老年代

  1. 调整新生代和老年代的比率
  2. 如果最大堆和最小堆一样,且设置了新生代后,不需要设置该比值
  3. 官方推荐新生代占堆的3/8

线程栈空间

  1. 相同物理内存下,减少栈空间可以生成更多的线程
  2. 一般操作系统同一个进程生成的线程数为3000-5000左右

幸存代和Eden区比值

  1. 一般为 E:S0:S1=8:1:1

垃圾回收器

垃圾回收器具体选择

-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC
-XX:+UseG1GC

GC记录

输出GC活动日志

-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=< number of log files > 
-XX:GCLogFileSize=< file size >[ unit ]
-Xloggc:/path/to/gc.log

引用

https://blog.csdn.net/qq_41692766/article/details/106223390