当前位置: 首页 > news >正文

Java 优化springboot jar 内存 年轻代和老年代的比例 减少垃圾清理耗时 如调整 -XX:NewRatio

-XX:NewRatio 是 Java Virtual Machine (JVM) 的一个选项,用于调整 年轻代(Young Generation)和 老年代(Old Generation)之间的内存比例。

1. 含义

XX:NewRatio=N 用于指定 老年代 与 年轻代 的内存比例。

N 的含义:

老年代内存占整个堆内存的比例为 (N / (N + 1))。
年轻代内存占整个堆内存的比例为 (1 / (N + 1))。

例如:

-XX:NewRatio=3:
老年代占堆内存的 3/4。
年轻代占堆内存的 1/4。

2. 默认值

HotSpot JVM 中,NewRatio 的默认值为 2:
老年代占堆内存的 2/3。
年轻代占堆内存的 1/3。

3. 使用场景

根据应用程序的内存分配需求,可以调整 NewRatio:

对象生命周期较长的应用(如服务器应用):
推荐使用较高的 NewRatio(如 3 或更高),将更多的堆内存分配给老年代。

对象生命周期较短的应用(如计算密集型应用):
推荐使用较低的 NewRatio(如 2 或更低),将更多的堆内存分配给年轻代。

4. 示例

启动参数设置

java -XX:NewRatio=3 -Xms512m -Xmx512m -jar myapp.jar

堆内存分布计算
假设堆大小为 512 MB 且 -XX:NewRatio=3:

年轻代:512 MB / (3 + 1) = 128 MB
老年代:512 MB - 128 MB = 384 MB

5. 注意事项

与其他 GC 选项的关系:

如果使用 G1 GC(-XX:+UseG1GC),NewRatio 可能不起作用,因为 G1 GC 会根据应用动态调整堆内存划分。

对象分配失败的影响:

如果年轻代内存分配太小,可能导致频繁的 Minor GC。
如果老年代内存分配太小,可能导致频繁的 Major GC 或 Full GC。
建议:

监控应用内存使用情况(通过工具如 jstat、VisualVM 或 Java Mission Control),根据实际需要调整。

6. 常见调优组合

初始堆大小和最大堆大小:

-Xms512m -Xmx1024m

年轻代内存固定大小(替代 NewRatio):

-XX:NewSize=128m -XX:MaxNewSize=128m

GC 日志分析:

-Xlog:gc*:gc.log

通过合理调整 NewRatio 和其他 JVM 参数,可以有效优化 Java 应用的内存使用和 GC 行为!

http://www.lryc.cn/news/506928.html

相关文章:

  • 嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
  • 在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。
  • 【windows】sonarqube起不来的问题解决
  • golang异常
  • 搭建MongoDB
  • Android中坐标体系知识超详细讲解
  • 不需要服务器,使用netlify快速部署自己的网站
  • Swin transformer 论文阅读记录 代码分析
  • 信息安全概论
  • 2024年12月16日Github流行趋势
  • Go 1.24即将到来!
  • FFmpeg库之ffplay
  • scala中模式匹配的应用
  • WebRTC搭建与应用(一)-ICE服务搭建
  • 【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
  • Kafka学习篇
  • 冬日养仓鼠小指南:温暖与陪伴同行
  • 【计算机视觉基础CV】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用
  • Python爬虫之代理的设置
  • Canoe E2E校验自定义Checksum算法
  • [HNCTF 2022 Week1]你想学密码吗?
  • 端到端自动驾驶大模型:视觉-语言-动作模型 VLA
  • druid与pgsql结合踩坑记
  • 【xxl-job】XXL-Job源码深度剖析:分布式任务调度的艺术与实践
  • 图漾相机-ROS1_SDK_ubuntu版本编译(新版本)
  • 项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
  • 【NLP 17、NLP的基础——分词】
  • uniapp blob格式转换为video .mp4文件使用ffmpeg工具
  • 【无标题】 [蓝桥杯 2024 省 B] 好数
  • Leecode刷题C语言之同位字符串连接的最小长度