【Java JVM调优核心秘诀】:深入解析-XX:NewRatio参数对新生代内存分配的决定性影响

第一章:Java JVM调优中-XX:NewRatio的核心地位

在Java虚拟机(JVM)性能调优过程中,内存区域的合理划分对应用的吞吐量与响应时间具有决定性影响。其中,新生代与老年代的比例设置尤为关键,而-XX:NewRatio参数正是控制这一比例的核心选项。该参数定义了老年代与新生代之间的大小比率,直接影响对象的晋升行为和垃圾回收(GC)频率。

参数作用机制

-XX:NewRatio=2表示老年代与新生代的比值为2:1,即新生代占整个堆内存的1/3,老年代占2/3。该值越小,新生代空间越大,适合对象生命周期较短的应用场景;反之,则利于长期存活对象的存储。
典型配置示例
# 启动Java应用并设置新生代与老年代比例为1:4
java -XX:NewRatio=4 -Xmx4g MyApp

# 结合使用并行GC进行优化
java -XX:NewRatio=3 -XX:+UseParallelGC -Xms2g -Xmx8g MyApp
上述命令中,-XX:NewRatio=3设定老年代是新生代的3倍,适用于中等对象晋升速率的服务。

不同场景下的推荐取值

应用场景建议NewRatio值说明
高并发短生命周期对象1~2增大新生代以减少频繁GC
常规Web服务3平衡新生代与老年代
大数据处理或缓存密集型5~8允许更多对象进入老年代
  • -XX:NewRatio仅在未显式设置新生代大小(如-XX:NewSize)时生效
  • 与-XX:SurvivorRatio协同工作,共同决定新生代内部Eden与Survivor区分布
  • 建议结合GC日志分析工具(如GCViewer)持续观察调优效果

第二章:-XX:NewRatio参数的底层机制解析

2.1 理解JVM堆内存结构与代际划分

JVM堆内存是对象实例的存储区域,被划分为不同的代际以优化垃圾回收效率。
堆内存的主要分区
堆内存通常分为新生代(Young Generation)和老年代(Old Generation)。新生代又细分为Eden区、两个Survivor区(S0和S1)。
  • Eden区:大多数新创建的对象首先分配在此
  • Survivor区:经历一次Minor GC后仍存活的对象移入
  • 老年代:长期存活对象最终晋升至此
对象生命周期与GC流程

// 示例对象在堆中的分配与晋升
Object obj = new Object(); // 分配在Eden区
当Eden区满时触发Minor GC,存活对象复制到Survivor区;经过多次回收仍未死亡则晋升至老年代。
区域用途典型GC类型
Eden存放新对象Minor GC
Survivor暂存幸存对象Minor GC
Old Gen存放长期存活对象Major GC / Full GC

2.2 -XX:NewRatio参数的定义与计算逻辑

参数基本定义
-XX:NewRatio 是JVM中用于设置堆内存中新生代(Young Generation)与老年代(Old Generation)比例的核心参数。其值表示老年代与新生代大小的比值,例如设置为3时,意味着老年代占3份,新生代占1份,总堆按4份划分。
计算逻辑说明
假设总堆大小为 1024MB,且 -XX:NewRatio=3,则:
  • 新生代大小 = 总堆 / (NewRatio + 1) = 1024 / (3 + 1) = 256MB
  • 老年代大小 = 总堆 - 新生代 = 1024 - 256 = 768MB
java -Xmx1024m -XX:NewRatio=3 -jar MyApp.jar
该配置下,JVM将堆划分为256MB新生代和768MB老年代。此参数适用于吞吐量优先的场景,合理调整可优化GC频率与暂停时间。
典型取值对照表
NewRatio新生代占比老年代占比
150%50%
325%75%
712.5%87.5%

2.3 新生代与老年代比例的实际影响路径

JVM堆内存中新生代与老年代的比例配置,直接影响对象生命周期管理与GC效率。默认情况下,新生代与老年代比例为1:2,可通过-XX:NewRatio参数调整。
比例配置对GC行为的影响
当新生代过小,大量本应短期存活的对象被迫提前进入老年代,增加老年代GC频率;反之,过大则可能导致Minor GC耗时增加。

-XX:NewRatio=2 -XX:SurvivorRatio=8
上述配置表示老年代是新生代的2倍,新生代中Eden区与每个Survivor区比例为8:1:1,合理分配可减少晋升压力。
典型场景对比
场景NewRatio晋升速率GC停顿趋势
高短时对象1低稳定
长生命周期对象多3高增长

2.4 不同取值下的内存分配行为对比分析

在Go语言中,切片的初始容量设置对内存分配行为有显著影响。不同的容量预设值会触发不同的底层内存扩容策略,进而影响性能和资源利用率。
小容量与大容量分配对比
当切片初始化时指定较小容量,运行时可能频繁触发扩容;而合理预设较大容量可减少分配次数。

slice := make([]int, 0, 10)   // 预分配10个元素空间
slice = append(slice, 1, 2, 3)
上述代码预分配容量为10,避免了前几次追加操作的内存重新分配。参数`10`决定了底层数组的初始大小,有效降低append操作的复制开销。
不同预设值的性能表现
初始容量分配次数总耗时(纳秒)
051200
101300

2.5 配合其他参数(如-Xmx)的协同作用机制

JVM垃圾回收器的行为往往依赖于多个启动参数的协同配置,其中 -Xmx(最大堆大小)对GC频率和暂停时间有直接影响。当设置较大的-Xmx值时,Eden区可相应扩大,降低Young GC触发频率。
典型参数组合示例
java -Xmx4g -Xms4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 MyApp
上述配置中,-Xmx4g 限制堆上限为4GB,配合G1回收器可预测停顿时间目标。更大的堆空间减少了Full GC发生概率,但可能增加单次GC耗时。
关键参数协同关系
  • -Xmx 与 -Xmn 共同决定新生代大小,影响对象晋升速度
  • -Xmx 过大而物理内存不足时,可能引发操作系统级交换(swap),恶化响应延迟
  • 配合 -XX:MaxHeapFreeRatio 可控制堆缩容行为,实现资源动态释放

第三章:新生代性能特征与GC行为关联

3.1 新生代大小对对象分配速率的影响

新生代是Java堆中用于存放新创建对象的区域,其大小直接影响对象的分配速率与GC频率。增大新生代可降低Minor GC的触发频率,提升对象分配效率。
配置示例
-Xms512m -Xmx2g -Xmn768m
上述参数设置堆初始大小为512MB,最大2GB,其中新生代为768MB。通过调整-Xmn值可优化对象分配性能。
性能影响因素
  • 新生代过小:频繁触发Minor GC,降低对象分配速率
  • 新生代过大:延长GC停顿时间,可能影响老年代空间
  • Eden区占比:合理划分Eden与Survivor区比例有助于提升回收效率
在高并发应用中,适当增加新生代可显著减少GC次数,提升吞吐量。

3.2 Minor GC频率与持续时间的权衡关系

在JVM垃圾回收机制中,Minor GC的频率与单次持续时间存在明显的反向关系。频繁触发Minor GC可减少每次回收对象数量,从而缩短停顿时间,但会增加CPU开销;反之,降低频率虽减轻CPU负担,却可能导致年轻代堆积,引发更长的暂停。
性能调优的关键参数
  • -XX:NewRatio:控制年轻代与老年代比例
  • -XX:SurvivorRatio:设置Eden区与Survivor区比例
  • -XX:+UseAdaptiveSizePolicy:启用动态调整策略
典型配置示例
-Xmx4g -Xms4g -Xmn1g -XX:SurvivorRatio=8 -XX:+UseParNewGC
该配置将堆大小固定为4GB,年轻代设为1GB,Eden:S0:S1=8:1:1。通过限制年轻代容量,可控制Minor GC频率在合理区间,避免过于频繁或积压。
不同场景下的表现对比
场景GC频率平均停顿(ms)吞吐量影响
小而频繁高5~10中等
大而稀疏低50~100显著

3.3 大对象晋升压力与Full GC触发风险

当JVM中频繁创建大对象(如大数组或缓存数据)时,这些对象可能直接进入老年代,造成老年代空间快速耗尽,增加Full GC的频率。
大对象直接晋升机制
JVM通过参数 -XX:PretenureSizeThreshold 控制对象直接分配至老年代的阈值。超过该值的对象将跳过年轻代,直接在老年代分配。

// 示例:一个大对象的声明
byte[] largeObject = new byte[2 * 1024 * 1024]; // 2MB,可能直接进入老年代
上述代码若在开启 -XX:PretenureSizeThreshold=1M 的JVM中运行,该数组将绕过Eden区,直接晋升至老年代。
Full GC风险加剧
大量大对象持续晋升会迅速填满老年代空间,触发Major GC或Full GC。由于老年代回收成本高,系统可能出现长时间停顿。
  • 频繁Full GC影响服务响应时间
  • 大对象生命周期长,加剧内存碎片
  • 可能导致“GC overhead limit exceeded”错误

第四章:生产环境中的调优实践策略

4.1 基于应用负载特征设定合理的NewRatio值

JVM的堆内存被划分为新生代和老年代,NewRatio参数控制两者之间的比例。合理设置该值需结合应用的内存分配与对象生命周期特征。
典型应用场景分析
长期存活对象较多的服务(如缓存系统),应适当调小NewRatio以扩大老年代;短生命周期对象密集的应用(如Web请求处理),可增大新生代比例。
JVM参数配置示例

# 设置新生代与老年代比例为1:3
-XX:NewRatio=3
# 结合使用初始堆大小
-Xms4g -Xmx4g -XX:NewRatio=3
上述配置表示老年代占堆的3/4,新生代占1/4。适用于老年代对象较多的中台服务。
性能影响对照表
应用场景NewRatio建议值理由
高吞吐API服务2~3减少Minor GC频率
大数据处理1~2避免频繁晋升引发Full GC

4.2 监控工具辅助下的参数验证与调优迭代

在高并发系统中,仅依赖静态配置难以保障服务稳定性。通过引入 Prometheus 与 Grafana 构建实时监控体系,可动态观测关键指标如 QPS、响应延迟与线程池状态。
监控驱动的参数校验
利用埋点数据验证线程池核心参数合理性。例如,观察队列积压情况判断队列容量是否过小:
// 暴露线程池运行状态至监控系统
func ExportPoolMetrics(pool *ants.Pool) {
    prometheus.MustRegister(prometheus.NewGaugeFunc(
        prometheus.GaugeOpts{Name: "thread_pool_queue_length"},
        func() float64 { return float64(pool.TuningQueueSize()) },
    ))
}
该代码将线程池队列长度以指标形式暴露给 Prometheus,便于在 Grafana 中设置告警阈值。
基于反馈的动态调优
结合监控数据迭代优化参数配置,常见调优策略包括:
  • 当任务等待时间超过阈值时,增加核心线程数
  • 若活跃线程长期低于核心数,可降低以节省资源
  • 根据峰值 QPS 动态调整最大线程上限
通过持续监控—分析—调整闭环,实现线程池参数的自适应演进。

4.3 典型场景案例:高吞吐服务的参数优化路径

在高吞吐量服务场景中,系统性能常受限于I/O和线程调度效率。以Go语言构建的微服务为例,可通过调整运行时参数显著提升处理能力。
关键参数调优策略
  • GOMAXPROCS:绑定CPU核心数,避免上下文切换开销;
  • GC触发阈值:通过GOGC调整垃圾回收频率,降低停顿时间;
  • 连接池与协程池大小:防止资源竞争成为瓶颈。
runtime.GOMAXPROCS(runtime.NumCPU())
debug.SetGCPercent(20) // 更激进的GC策略
上述代码将并发执行单元数设为CPU核心数,并将GOGC调至20,使GC更早启动,减少单次STW时长。在某订单处理系统中,该配置使QPS从12,000提升至18,500,P99延迟下降40%。

4.4 容器化部署中NewRatio的适配注意事项

在容器化环境中,JVM 的内存管理需结合容器资源限制进行精细化配置。NewRatio 参数用于设置老年代与新生代的比例,在容器中若未合理设定,可能导致频繁 GC 或内存浪费。
典型配置示例
java -XX:NewRatio=2 -Xmx1g -jar app.jar
该配置表示老年代与新生代比例为 2:1,即堆内存中约 1/3 分配给新生代,2/3 分配给老年代。在容器内存受限时(如 1G),过大的 NewRatio 会压缩新生代空间,增加 Minor GC 频次。
适配建议
  • 结合应用对象生命周期特征调整 NewRatio,短生命周期对象多的应用可降低该值(如设为 1)
  • 配合 -Xmn 显式设置新生代大小,避免动态调整带来的波动
  • 在 Kubernetes 中通过 requests/limits 统一规划 JVM 堆与容器内存边界,预留空间防止 OOMKilled

第五章:总结与JVM内存调优的未来方向

现代JVM调优的趋势演进
随着GraalVM和Project Loom的推进,JVM平台正朝着更轻量、更高并发的方向发展。虚拟线程(Virtual Threads)极大降低了线程创建成本,使得传统堆内存压力更多来自短期对象而非线程栈。在高吞吐微服务场景中,推荐结合ZGC或Shenandoah实现亚毫秒级停顿。
实战案例:电商大促期间的GC优化
某电商平台在双十一压测中发现Old GC频率异常升高。通过以下JVM参数调整显著改善:

-XX:+UseZGC 
-XX:MaxGCPauseMillis=100 
-XX:+UnlockExperimentalVMOptions 
-XX:ZCollectionInterval=5 
-Xmx8g -Xms8g
配合监控工具Prometheus + Grafana追踪Metaspace增长趋势,发现动态代理类过多导致Metaspace溢出,最终通过增加-XX:MaxMetaspaceSize=512m并启用类卸载解决。
内存诊断工具链的协同使用
有效的调优依赖多维度数据支撑,常用组合如下:
  • jcmd:实时获取堆直方图与GC统计
  • jfr(Java Flight Recorder):开启低开销生产级事件记录
  • Async-Profiler:定位内存分配热点
  • VisualVM插件集成:可视化分析dump文件
未来调优的关键技术方向
技术方向优势适用场景
Region-based Heap (如G1/ZGC)减少碎片,控制延迟低延迟交易系统
AOT编译(GraalVM)启动时间缩短60%+Serverless函数计算
[应用程序] → [虚拟线程调度] → [ZGC回收区域] → [堆外内存缓存] ↘ [Metrics上报] → [Prometheus] → [告警触发]
Android SELinux——neverallow问题处理(十六) 遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。 阅读详情

相关推荐

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1084

第9课:jvm的gc时候核心参数详解:-XX:NewRatio、-XX:SurvivorRatio、-XX:NewSize、-XX:MaxNewSize

内容:     1.-XX:NewRatio     2.-XX:SurvivorRatio     3.-XX:NewSize和-XX:MaxNewSize 一、JVM内存结构图 二、参数详解     1.-xx:NewRatio:年轻代和老年代相对的比值大小大小,如果设置-XX:NewRatio=4,指标是Young Generation:Old Generation = 1:4,即年...

someby的博客 7990

2D激光slam数据集的下载与测试

参考博客: https://blog.youkuaiyun.com/qq_24894159/article/details/81265991 https://blog.youkuaiyun.com/fk1174/article/details/52673413#commentBox 数据集下载与生成 下载数据集 下载网址: http://ais.informatik.uni-freiburg.de/slamevaluation/datasets.php 进去网站后点你想下载的对应的"download log file" 然后你

老李的博客 4025

JVM参数-XX:NewRatio、-XX:SurvivorRatio的含义

-XX:NewRatio 新生代(eden + 2*servivor) 与老年代的比值, 4 代表 新生代:老年代 = 1:4 -XX:SurvivorRatio 设置新生代中两个survivor 和 eden的比值 8代表 两个survivor:eden = 2:8 一个survivor占新生代的1/10 ...

风吹沙 4001

从零到一:基于K375S主控的机械键盘优联无线化改造实战

本文详细记录了基于罗技K375S主控进行机械键盘优联无线化改造的全过程。从改造动机、核心原理与物料准备,到电路设计、PCB打样、焊接调试,逐步拆解了将优联技术集成到自定义机械键盘中的实战步骤。项目最终实现了低延迟、高稳定性且支持多设备连接的优联无线机械键盘,为DIY爱好者提供了高性价比的改造方案。

h0i1j2k3l的博客 600

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软件,实现在公网环境也能访问你在本地内网搭建的大语言模型运行环境。近些年来随着ChatGPT的兴起,大语言模型 LLM(Large Language Model)也成为了人工智能AI领域的热门话题,很多大厂也都推出了自己的大语言模型,并或多或少的开源了自己的大语言模型,今天就来分享一个最近很火,且对于小白来说比较好上手本地部署的运行本地LLM的工具Ollama。

迪之的博客 1651

JVM -XX:NewRatio、-XX:SurvivorRatio参数含义

老年代不包含持久代 年青代:新生代eden+2*s(to\from space) 年青代=新生代(eden space)+2个survivor 年青代用来存放新近创建的对象,尺寸随堆大小的增大和减小而相应的变化,默认值是保持为堆大小的1/15,可以通过-Xmn参数设置年青代为固定大小,也可以通过-XX:NewRatio来设置年青代与年老代的大小比例,年青代的特点是对象更新速度快,

落叶翩翩的优快云博客 8884

万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)

本文详细介绍了PostgreSQL在四大主流环境下的安装方法: Linux系统:针对Ubuntu/Debian和CentOS/RHEL系,分别提供APT/YUM仓库安装步骤,包括初始化配置和服务管理 Windows系统:通过图形化安装程序指导完成安装,包含组件选择、密码设置和pgAdmin配置 macOS系统:推荐使用Homebrew一键安装,支持Apple Silicon和Intel芯片 Docker容器:提供容器化部署方案(文中未展开) 文章强调安装前的版本选择、权限管理和存储规划,并针对各平台给出验证

数据知道的博客 4497

JVM调优参数

jvm 调优参数的说明

959 2647

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 526

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 345

JVM调优

理论篇 多功能养鱼塘-JVM内存 大鱼塘O(可分配内存):JVM可以调度使用的总的内存数,这个数量受操作系统进程寻址范围、系统虚拟内存总数、系统物理内存总数、其他系统运行所占用的内存资源等因素的制约。 小池塘A(堆内存):JVM运行时数据区域,它为类实例和数组分配的内存。堆可以是固定大小的也可以是可变大小的。其中 Heap = {Old + NEW = { Eden , from, to } }。 小池塘B(非堆内存):包括所有线程之间共享的一个方法区域和JVM为优化或内部处理所分配的内存。它存

weixin_42795092的博客 1893

【ComfyUI】多模型 户型图风格渲染效果图

本文介绍了一种基于ComfyUI的室内户型图自动渲染工作流,将平面图转换为风格化效果图。该工作流通过RH_Captioner节点识别空间布局,结合Qwen2.5模型优化文本描述,再使用定制室内设计模型生成渲染图。整个流程包含图像输入、空间识别、文本组织、语言生成、风格转换和渲染输出等9个阶段,各节点协同完成从户型图到效果图的全自动转换。系统融合了语言理解和图像生成技术,可广泛应用于室内设计、装修可视化等领域。

Mr数据杨 3007

-XX:NewRatio 命令

# 新生代1/5=300m 老生代4/5=1200m -server -Xms1500m -Xmx1500m -XX:SurvivorRatio=3 -XX:NewRatio=4 # 这里设置了-Xmn1000m,则-XX:NewRatio=4将被忽略 -server -Xms1500m -Xmx1500m -Xmn1000m XX:SurvivorRatio=3 ...

kongkong的专栏 6077

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JVM-参数调优之-XX:NewRatio

1、通俗易懂,适合小白 2、仅做面试复习用,部分来源网络,博文免费,知识无价,侵权请联系!

weixin_42932609的博客 1106

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JVM核心参数用法详解

JVM核心参数对于Java应用程序的性能、内存管理和调优等方面非常重要。通过了解和合理配置这些参数,我们可以优化应用程序的运行性能,并提高系统的稳定性和可靠性。本文介绍了一些常用的JVM核心参数,希望能够帮助开发人员更好地理解和配置JVM。

557

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【jvm】如何设置新生代和老年代的比例

例如,-XX:SurvivorRatio=4表示Eden区与Survivor区的比例为4:1:1(因为有两个Survivor区,所以实际比例是8:2:2,但通常简化为8:1:1来表示)。4.设置方法:例如,要设置新生代与老年代的比例为1:3,可以使用-XX:NewRatio=3。3.默认值:默认情况下,-XX:NewRatio的值为2,表示老年代与新生代的比例为2:1,即新生代占堆内存的1/3,老年代占2/3。3.-XX:NewRatio=3 设置老年代与新生代的比例为3:1,即新生代占堆内存的1/4。

王佑辉的博客 2165

JVM参数 -XX:NewRatio=2 调节新生代 与 老年代的比例

验证: 先不加 -XX:NewRatio 参数查看默认 -XX:+UseDerialGC 表示串行垃圾回收器 新生代 :老年代 = 1:2 与加上 -XX:NewRatio=2 效果一致 修改比例 -XX:NewRatio=4时 新生代:老年代 = 1:4

图灵传奇的博客 4348

jvm的gc log 以及各种参数

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Xms20M -Xmx20M -Xmn10M -XX:NewRatio=1 -XX:NewRatio=1 表示新生代占1,老年代占2。则新生代占整个堆的1/3。(这个参数一般不会使用) -XX:+UseParNewGC表示年轻代使用serial的多线程版本,它是server模式下首选的新生代收集器,因为能与cms配合...

stay foolish 1861

Java面试题系列——JavaSE面试题(JVM二)

Java面试题系列——JavaSE面试题(JVM二)

weixin_55229531的博客 5万+

JVM GC的核心参数: -XX:Newratio -XX:Newsize -XX:Maxnewsize -XX:Surviorratio

-XX:Newratio:  设置Yong 和 Old的比例,比如值为2,则Old Generation是 Yong Generation的2倍,即Yong Generation占据内存的1/3 -XX:Newsize : 设置Yong Generation的初始值大小 -XX:Maxnewsize:设置Yong Generation的最大值大小 -XX:Surviorratio : 设置E

3万+

JVM-XX:NewRatio 、-XX:SurvivorRatio 参数的含义

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33968104的博客 380

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

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

空 940

JVM 运行时内存之新生代和老年代。

Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区、 From Survivor 区和 To Survivor 区)和老年 代。 1. 新生代 是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发 MinorGC 进行垃圾回收。新生代又分为 Eden 区、 ServivorFrom、 ServivorTo 三个区。 1.1. Eden 区 Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老 年代)。当 Eden 区内存不够的时候就会触发

weixin_43811057的博客 1628

JVM常用基础参数NewRatio详解

NewRatio参数讲解 在上一篇文章SurvivorRatio的讲解中, 可以知道 新生代占1 , 老年代占2, 即 年轻代占整个堆内存的三分之一. SurvivorRatio的讲解 而NewRatio参数就是用于调整新生代与老年代的占比的. NewRatio 参数实战 使用如下的测试代码, public class MyHelloGc { public static void main(String[] args) throws InterruptedException {

Java持续实践 1万+

JVM学习----堆内存(新生代与老年代)

JVM运行时内存 新生代 新生代:是用来存放新生的对象。 分为Eden 区、 SurvivorFrom、 SurvivorTo 三个区。Minor GC(复制算法) 进行垃圾回收。JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,新生代实际可用的内存空间为 9/10 ( 即90% )的新生代空间。 Eden 区 :Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当 Eden 区内存不够的时候就会触发 MinorGC,对新生代区进行一次垃圾回

Thomasc的博客 3798
上一篇: 【高并发系统设计必备】:MyBatis延迟加载触发原理与最佳实践
下一篇: MyBatis resultMap继承实战指南(资深架构师20年经验总结)
SimSolve
博客等级 码龄1年 152粉丝 2009原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值