502887·mooc免费版有什么用

核心内容摘要

揭秘《原神》:甘雨被旅行者“挤扔”的那些名场面,你收藏了多少?
搞机time:10分钟,拥抱电信极速,解锁长安新体验

“二人生猴子,全程不盖被子”

JVM 参数配置指南内存调优、收集器选择与问题排查核心前提JVM 参数的通用格式标准参数以-开头如-version所有 JVM 实现都支持非标准参数以-X开头如-XmsHotSpot 主流支持不保证跨版本兼容高级参数以-XX开头如-XX:Us

GC用于精细调优/-表示启用 / 禁用某个特性表示赋值。

内存配置参数最核心必掌握用于调整 JVM 各内存区域的大小是调优的第一步重点关注堆、元空间、栈的配置。

堆内存参数控制新生代 老年代参数作用默认值HotSpot示例-Xms堆初始大小新生代 老年代建议与-Xmx设为相同避免动态扩容触发 GC物理内存的 1/64最小 1MB-Xms2G初始堆 2GB-Xmx堆最大大小JVM 堆内存的上限物理内存的 1/4最大 1GB-Xmx4G最大堆 4GB-Xmn新生代大小EdenS0S1优先级高于NewRatio堆大小的 1/3由NewRatio控制-Xmn1G新生代 1GB-XX:NewRatio新生代老年代的比例如 2→1:2仅在未设-Xmn时生效2新生代 1/3老年代 2/3-XX:NewRatio31:3-XX:SurvivorRatioEden:S0/S1 的比例如 8→Eden 占 8/10S0/S1 各占 1/108-XX:SurvivorRatio66:1:1-XX:MaxTenuringThreshold对象从新生代进入老年代的年龄阈值每次 Minor GC 存活 115-XX:MaxTenuringThreshold88 次 GC 后进入老年代建议# 生产环境通用配置4核8G服务器java -Xms4G -Xmx4G -Xmn

5G -XX:SurvivorRatio8-jar app.jarXmsXmx避免堆动态扩容扩容时触发 Full GC新生代占堆的 1/3~1/2适配 “对象朝生夕死” 的特点减少 Major GC阈值根据业务调整短生命周期对象多则降低阈值如 8长生命周期多则提高如 15。

元空间方法区参数JDK8参数作用默认值示例-XX:MetaspaceSize元空间初始大小达到该值触发元空间 GC21MB64 位-XX:MetaspaceSize128M-XX:MaxMetaspaceSize元空间最大大小默认无上限易导致本地内存溢出无上限-XX:MaxMetaspaceSize256M-XX:MinMetaspaceFreeRatio元空间 GC 后空闲空间占比最小值低于则扩容40-XX:MinMetaspaceFreeRatio50-XX:MaxMetaspaceFreeRatio元空间 GC 后空闲空间占比最大值高于则缩容70-XX:MaxMetaspaceFreeRatio80建议# 防止元空间溢出动态生成类多的场景如Spring Boot、CGLIBjava -XX:MetaspaceSize128M -XX:MaxMetaspaceSize256M -jar app.jar

线程栈参数参数作用默认值64 位示例-Xss每个线程的虚拟机栈大小1MB-Xss512K建议高并发场景如 Netty、Tomcat可减小-Xss如 512K避免创建大量线程时栈内存溢出递归深度大的场景需增大-Xss如 2MB避免StackOverflowError。

直接内存参数NIO 使用参数作用默认值示例-XX:MaxDirectMemorySize直接内存上限默认与堆最大值一致等于-Xmx的值-XX:MaxDirectMemorySize2G建议NIO 密集型应用如网络通信、文件读写需单独配置避免直接内存溢出。

垃圾收集器配置参数用于指定使用的 GC 收集器不同收集器适配不同业务场景需按 “吞吐量 / 延迟” 需求选择。

收集器选择参数参数作用适用场景示例-XX:UseSerialGC启用串行收集器SerialGCSerialOldGC客户端 / 单核 / 低配置-XX:UseSerialGC-XX:UseParallelGC启用并行新生代收集器ParallelGC默认搭配 ParallelOldGC高吞吐量批处理、数据计算-XX:UseParallelGC-XX:UseParallelOldGC启用并行老年代收集器与 ParallelGC 搭配高吞吐量-XX:UseParallelOldGC-XX:UseConcMarkSweepGC启用 CMS 收集器老年代新生代默认搭配 ParallelGC低延迟Web 服务、电商-XX:UseConcMarkSweepGC-XX:Us

GC启用 G1 收集器全堆JDK9 默认通用场景JDK8 服务器端-XX:Us

GC-XX:UseZGC启用 ZGC 收集器全堆JDK11 支持超低延迟 / 超大堆百 G 级-XX:UseZGC组合示例# 高吞吐量场景JDK8java -Xms4G -Xmx4G -XX:UseParallelGC -XX:UseParallelOldGC -jar app.jar# 低延迟场景JDK8java -Xms4G -Xmx4G -XX:UseConcMarkSweepGC -XX:UseParNewGC -jar app.jar# 通用场景JDK11java -Xms4G -Xmx4G -XX:Us

GC -jar app.jar# 超大堆低延迟场景JDK17java -Xms32G -Xmx32G -XX:UseZGC -jar app.jar

收集器调优参数针对特定 GC1G1GC 专属参数JDK8 主流参数作用示例-XX:G1HeapRegionSiz

堆分区大小1MB~32MB默认根据堆大小自动计算-XX:G1HeapRegionSize4M-XX:MaxGCPauseMillisG1 目标最大 STW 时间仅为建议值不保证-XX:MaxGCPauseMillis200200ms-XX:G1NewSizePercent新生代最小占比-XX:G1NewSizePercent5-XX:G1MaxNewSizePercent新生代最大占比-XX:G1MaxNewSizePercent602CMS 专属参数CMS是 HotSpot 虚拟机中专门针对老年代设计的并发垃圾回收器也是 JVM 中首个实现低延迟、大部分阶段与业务线程并发执行的回收器核心定位是以牺牲部分吞吐量和内存碎片为代价大幅降低 Full GC 带来的 STW 时间适配对响应延迟敏感的业务场景。

参数作用示例-XX:CMSInitiatingOccupancyFractionCMS 触发阈值老年代使用率默认 92%-XX:CMSInitiatingOccupancyFraction80-XX:CMSParallelRemarkEnabledCMS 标记阶段启用多线程减少 STW 时间-XX:CMSParallelRemarkEnabled-XX:UseCMSCompactAtFullCollectionFull GC 后整理内存避免碎片-XX:UseCMSCompactAtFullCollection

GC 日志配置参数排查问题必配用于输出 GC 日志分析 GC 频率、STW 时间、内存使用情况是排查内存泄漏、GC 频繁的核心手段。

核心日志参数组合java -Xms4G -Xmx4G -XX:Us

GC\# 启用GC日志-XX:PrintGCDetails\-XX:PrintGCDateStamps\-XX:PrintGCTimeStamps\# 输出日志到文件按大小切割保留10个文件每个最大100MB-Xloggc:/var/log/app/gc.log\-XX:UseGCLogFileRotation\-XX:NumberOfGCLogFiles10\-XX:GCLogFileSize100M\# 打印堆内存使用情况-XX:PrintHeapAtGC\# 打印STW时间-XX:PrintGCApplicationStoppedTime\-jar app.jar关键参数说明参数作用-XX:PrintGCDetails打印详细 GC 日志回收区域、大小、耗时-XX:PrintGCDateStamps打印 GC 发生的日期时间如

T10:00:

0

1230800-Xloggc:path将 GC 日志输出到指定文件而非控制台-XX:UseGCLogFileRotation启用日志文件切割避免单个文件过大-XX:PrintGCApplicationStoppedTime打印 STW 的具体时间关键调优指标

性能调优与诊断参数用于监控 JVM 运行状态、启用性能优化、排查问题。

性能优化参数参数作用示例-XX:TieredCompilation启用分层编译JIT 的 C1C2 协同JDK8 默认启用-XX:TieredCompilation-XX:DisableExplicitGC禁用手动System.gc()避免触发 Full GC-XX:DisableExplicitGC-XX:UseLargePages启用大页内存提升内存访问效率-XX:UseLargePages-XX:UseCompressedOops启用压缩指针64 位 JVM减少内存占用32 位指针→64 位-XX:UseCompressedOopsJDK8 默认启用

诊断参数排查问题参数作用场景-XX:HeapDumpOnOutOfMemoryErrorOOM 时自动生成堆转储文件hprof排查 OOM 根因-XX:HeapDumpPath指定堆转储文件路径-XX:HeapDumpPath/var/log/app/heap.hprof-XX:PrintClassHistogram按下 CtrlBreak 时打印类实例数量和内存占用排查内存泄漏哪个类创建过多对象-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendn,address8000启用远程调试端口 8000线上问题调试谨慎使用实战示例OOM 排查java -Xms4G -Xmx4G -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/var/log/app/heap.hprof -jar app.jarOOM 时会在指定路径生成heap.hprof文件用MATMemory Analyzer Tool分析即可定位内存泄漏的对象。

JVM 参数配置模板

通用服务器配置JDK8G1GC4 核 8Gjava -Xms4G -Xmx4G -Xmn

5G\-XX:MetaspaceSize128M -XX:MaxMetaspaceSize256M\-XX:Us

GC -XX:MaxGCPauseMillis200\-XX:PrintGCDetails -XX:PrintGCDateStamps\-Xloggc:/var/log/app/gc.log -XX:UseGCLogFileRotation\-XX:NumberOfGCLogFiles10-XX:GCLogFileSize100M\-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/var/log/app/heap.hprof\-XX:DisableExplicitGC -Xss512K\-jar app.jar

高吞吐量配置批处理 / 数据计算java -Xms8G -Xmx8G -Xmn3G\-XX:UseParallelGC -XX:UseParallelOldGC\-XX:ParallelGCThreads4\-XX:PrintGCDetails -Xloggc:/var/log/app/gc.log\-jar app.jar

低延迟配置Web 服务 / 电商java -Xms4G -Xmx4G\-XX:Us

GC -XX:MaxGCPauseMillis100\-XX:G1NewSizePercent10-XX:G1MaxNewSizePercent50\-XX:PrintGCApplicationStoppedTime\-jar app.jar

总结

核心优先级内存参数-Xms/-Xmx 收集器参数-XX:Us

GC GC 日志参数 诊断参数

调优原则先定堆大小XmsXmx再选收集器最后调优收集器参数生产环境必配 GC 日志和 OOM 堆转储便于排查问题禁用System.gc()避免手动触发 Full GC

场景适配高吞吐量选 ParallelGCParallelOldGC低延迟选 G1GC/ZGC客户端 / 低配置选 SerialGC。

暗黑蘑菇17c91-暗黑蘑菇应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123