【JVM基础16】——实践-JVM调优的参数有哪些?


1- 引言:

对于 JVM 调优,主要就是调整年轻代、老年代、元空间的内存空间大小及使用的垃圾回收器类型。主要有以下类型

  • 设置堆空间大小
  • 虚拟机栈的设置
  • 年年轻代中 Eden 区和两个 Survivor 区的大小比例
  • 年轻代晋升老年代阈值
  • 设置垃圾收集器

2- ⭐核心:

2-1 设置堆空间大小

  • 设置堆的初始大小和最大大小,为了防止垃圾收集器在初始大小、最大大小之间收缩堆而产生额外的空间,通常把最大、最小设置为相同值。
    • Xms:设置堆的初始化大小
    • Xmx:设置堆的最大大小

image.png
堆空间设置为多少合适?

  • 最大大小的默认值是物理内存的 1/4,初始大小是物理内存的 1/64
  • 堆太小,可能会频繁的导致年轻代和老年代的垃圾回收,会产生 STW ,暂停用户线程
  • 堆内存大肯定是好的,存在风险,假如发生了 Full GC,它会扫描整个堆空间,暂停用户线程的时间长
  • 设置参考推荐:尽量大,也要考察一下当前计算机其他程序的内存使用情况。

2-2 虚拟机栈的设置

  • 虚拟机栈的设置:每个线程默认会开启 1M 内存,用于存放栈帧、调用参数、局部变量等,但一般 256K 就够用。通常减少每个线程的堆栈,可以产生更多的线程,但这实际上还受限于操作系统。
    • Xss:对每个线程 stack 大小的调整
  • 设置参考推荐:一般设置 256K 或者 512K 都是可以的。

image.png


2-3 年轻代 Eden 区和两个 Survivor 区的大小比例

  • 年轻代中 Eden 区和两个 survivor 区的大小比例
  • 设置年轻代中 Eden 区和两个 survivor 区的大小比例,该值如果不设置,则默认比例为 8:1:1。通过增大Eden 区的大小来减少 YGC 发生的次数,但有时我们发现,虽然次数减少了,但 Eden 区满的时候,由于占用的空间较大,导致释放缓慢,此时 STW 的时间较长,因此需要按照程序情况去调优。
    • -XXSurvivorRatio=8

image.png


2-4 年轻代晋升老年代阈值

  • -XX:MaxTenuringThreshold=threshold
    • 默认为 15
    • 取值范围为 0-15

2-5 设置垃圾回收器

  • 设置垃圾回收收集器

通过增大吞吐量提高系统性能,可 ,可以通过设置并行垃圾回收收集器。

  • -XX:+UserParallelGC
  • -XX:+UserParalleOldGC
  • --XX:+UserG1GC

3- 小结:

3-1 JVM调优的参数有哪些?

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值