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 行为!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实习冲刺数据库练习-01 基础查询

原题链接:牛客网在线编程_SQL篇_非技术快速入门 数据表示例: 根据数据表示例要求我们完成以下查询: (1)获取用户信息表中所有的数据,请你取出相应结果 (2)获取用户的设备id对应的…

【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换

相关链接: http://mars3d.cn/editor-vue.html?keyex_1_2_1&idmap/other/backgroundImg 实现代码: export function show1() {map.setOptions({scene: {backgroundType: "image",backgroundImage: "url(//data.mars3d.cn/img/busin…

telnet命令检查端口

1、简介 telnet是一种用于远程登录的协议,可以通过telnet客户端连接到远程主机,并在远程主机上执行命令。 2、使用telnet命令检查端口 2.1 进入linux终端 2.2 输入telnet命令 如果没有安装telnet命令,请执行以下命令安装 sudo yum install…

Unity 根据文本宽度自动移动图像位置

游戏中有时候需要变动的显示一个物品的数量,变化的文本宽度不停的变化,这时候需要将物品的icon随着文本的长度而改变位置。 实现思路:使用Content Size Fitter来动态改变内容的大小。 首先建立一个文本组件,添加Content Size Fi…

基于Springboot人口老龄化社区服务与管理平台【附源码】

基于Springboot人口老龄化社区服务与管理平台 效果如下: 系统登陆页面 系统主页面 社区信息页面 社区文件页面 活动报名页面 走访任务管理页面 社区资讯页面 老人信息管理页面 研究背景 随着社会老龄化的加剧,老年人口比例逐渐增加,对老年…

加密数据库在现代企业中的应用实践

以下是对加密数据库在现代企业中的应用实践的详细阐述: 一、加密数据库的应用背景 随着信息技术的飞速发展,现代企业对于数据的安全性和隐私保护要求越来越高。数据库作为存储大量敏感信息的关键设施,其安全性直接关系到企业的商业利益和声誉…

安卓环境配置及打开新项目教程,2024年12月20日最新版

1.去官网下载最新的Android Studio,网址:https://developer.android.com/studio?hlzh-cn 2.下载加速器,注册账号,开启加速器。网址:放在文末。 3.下载安卓代码,项目的路径上不能有中文,特别是…

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕

20241217使用M6000显卡在WIN10下跑whisper来识别中英文字幕 2024/12/17 17:21 缘起,最近需要识别法国电影《地下铁》的法语字幕,使用 字幕小工具V1.2【whisper套壳/GUI封装了】 无效。 那就是直接使用最原始的whisper来干了。 当你重装WIN10的时候&#…

sqlite3 支持位运算 和view和 triger

数据设置条件以后可以.根据门限自动调整其他的值 由数据库记录修改时间,及记录-> 网元设备的告警产生时间,设置超时清除时间,记录系统的原始时间戳 CPp 有 sqlite 支持 json 导出字符串,json 库将字符串,映射为结构体 triger update table 更新到一个 可设置参数列表 ,view …

11-C语言结构体(下篇)

一、结构体指针变量 结构体指针变量:本质上是一个指针变量,保存的是结构体变量的地址。 1.结构体变量的地址 结构体变量的地址:对结构体变量名取地址。 代码演示 typedef struct stu {char name[32];int age;float score; }STU;int main…

linux普通用户使用sudo不需要输密码

1.root用户如果没有密码,先给root用户设置密码 sudo passwd root #设置密码 2.修改visudo配置 su #切换到root用户下 sudo visudo #修改visudo配置文件 用户名 ALL(ALL) NOPASSWD: ALL #下图所示处新增一行配置 用户名需要输入自己当前主机的用户名

百度面试手撕 go context channel部分学习

题目 手撕 对无序的切片查询指定数 使用context进行子协程的销毁 并且进行超时处理。 全局变量定义 var (startLoc int64(0) // --- 未处理切片数据起始位置endLoc int64(0) // --- 切片数据右边界 避免越界offset int64(0) // --- 根据切片和协程数量 在主线程 动态设…

任务一登录安全加固

1 (1)、(2) secpol.msc打开本地安全策略 2 (1) DCOM: 在安全描述符定义语言(SDDL)语法中的计算机访问限制 没有定义 DCOM: 在安全描述符定义语言(SDDL)语法中的计算机启动限制 没有定义 Microsoft 网络服…

无人机推流直播平台EasyDSS视频技术如何助力冬季森林防火

冬季天干物燥,大风天气频繁,是森林火灾的高发期。相比传统的人力巡查,无人机具有更高的灵敏度和准确性,尤其在夜间或浓雾天气中,依然能有效地监测潜在火源。 无人机可以提供高空视角和实时图像传输,帮助巡…

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…

Halcon 机器视觉案例 之 药剂液面高度测量

第二篇 机器视觉案例 之 药剂液面高度测量 文章目录 第二篇 机器视觉案例 之 药剂液面高度测量1.案例要求2.实现思路2.1获得液面的位置:2.1.1 获得每支药剂的位置坐标2.1.2 根据药剂的横坐标设置卡尺工具助手找到每一个液面的位置 2.2 获得基准线的位置:…

使用k6进行MongoDB负载测试

1.安装环境 安装xk6-mongo扩展 ./xk6 build --with github.com/itsparser/xk6-mongo 2.安装MongoDB 参考Docker安装MongoDB服务-CSDN博客 连接成功后新建test数据库和sample集合 3.编写脚本 test_mongo.js import xk6_mongo from k6/x/mongo;const client xk6_mongo.new…

LabVIEW随机扫描成像系统

利用LabVIEW开发了一套随机扫描成像系统,利用硬件时钟实现声光偏转器(AOD)的频率控制与信号采集之间的高速时间同步。系统利用了高精度的时钟同步技术,确保了成像精度和重复性,从而有效提高了成像速度和质量。 项目背景…

29. 多线程编程

一、什么是线程 线程(thread)它们是同一个进程下执行的,并共享相同的下上文。线程包括开始、执行顺序和结束三部分。它有一个指令指针,用于记录当前运行的上下文。当其它线程运行时,它可以被抢占(中断&…

精准采集整车信号:风丘混合动力汽车工况测试

一 背景 混合动力汽车是介于纯电动汽车与燃油汽车两者之间的一种新能源汽车。它既包含纯电动汽车无污染、启动快的优势,又拥有燃油车续航便捷、不受电池容量限制的特点。在当前环境下,混合动力汽车比纯电动汽车更符合目前的市场需求。 然而&#xff0c…