jvm调优基本总结

一、jvm默认设置参数

  • 声明:基本的设置参数可以如下,但是你得根据你的实际业务场景进行调整
-Xms128m
-Xmx2043m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

二、jvm调优参数解释

  1. jvm堆的设置,一般将-Xms -Xmx限定为其最小值与最大值,为了防止垃圾回收器在最小、最大之间收缩而产生额外的时间,通常把最大、最小设置为相同的值
  2. 年轻代和年老代将根据默认的比例(1:2)分配内存,也可以通过调整二者之间的比率NewRadio来调整其二者之间的大小,为了防止年轻代的堆收缩,一般会将 XX:newSize -XX:MaxNewSize 设置为同样大小
  3. 年轻代与年老代
1)更大的年轻代必然导致更小的年老代,大的年轻代会延长普通GC的周期,但会增加每次GC的时间;小的年老代会导致更频繁的Full GC。
(2)更小的年轻代必然导致更大的年老代,更小的年轻代会导致GC更加频繁,但会减少GC的时间,大的年老代会减少Full GC 的频率。
  • 分析:根据具体的业务场景以及对象生命周期的分布情况:如果存在大量临时对象,应该选择更大年轻代;如果存在相对较多持久对象,年老代应该适量增大。
  • 具体依据:
    (1) 本着Full GC尽量少的原则,让年老代尽量缓存常用对象,JVM的默认比例1:2
    (2) 观察应用一段时间,看其他的峰值时年老代会占多少内存,在不影响Full GC的前提下,根据实际情况加大年轻代,
    比如可以把比例控制在1:1,但需应该给年老代至少预留1/3的增长空间
  1. 在配置较好的机器上(比如多核,大内存),可以为年老代选择收集算法:-XX:+UseParallelOldGc
  2. 线程堆栈的设置:每个线程默认开启1M堆栈,用于存放栈帧、调用参数、局部变量等,一般这个默认值较大,256k就够了
    理论上,在内存不变的情况下,减少每个线程的堆栈,可以产生更多的线程,这受限于操作系统。
posted @   牛奶配苦瓜  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示