一、内存相干参数
1. 堆内存控制
- -Xmx:最大堆内存(如 -Xmx4g,默认物理内存1/4)。
- -Xms:初始堆内存(建议与-Xmx相等,避免动态扩容带来的性能波动)。
- -Xmn:新生代大小(如 -Xmn2g,需衡量老年代空间)。
- -XX:NewRatio:老年代与新生代的比例(如 -XX:NewRatio=2 表示老年代是新生代的2倍)。
- -XX:SurvivorRatio:Eden区与Survivor区的比例(如 -XX:SurvivorRatio=8 表示Eden:S0:S1=8:1:1)。
2. 元空间(方法区)
- -XX:MetaspaceSize:初始元空间大小(默认约21M)。
- -XX:MaxMetaspaceSize:最大元空间大小(防止无限膨胀,如 -XX:MaxMetaspaceSize=256m)。
3. 直接内存(堆外内存)
- -XX:MaxDirectMemorySize:限制NIO直接内存(如 -XX:MaxDirectMemorySize=512m)。
二、垃圾回收器(GC)相干
1. 指定GC算法
- -XX:+UseSerialGC:串行回收器(单线程,得当客户端应用)。
- -XX:+UseParallelGC:并行回收器(多线程,吞吐量优先)。
- -XX:+UseConcMarkSweepGC:CMS回收器(低延迟,JDK8及之前)。
- -XX:+UseG1GC:G1回收器(均衡吞吐与延迟,JDK9+默认)。
- -XX:+UseZGC:ZGC(超低延迟,JDK11+)。
- -XX:+UseShenandoahGC:Shenandoah(低延迟,RedHat贡献)。
2. GC调优参数
- -XX:MaxGCPauseMillis:目标最大GC停顿时间(G1默认200ms,如 -XX:MaxGCPauseMillis=100)。
- -XX:G1HeapRegionSize:G1的Region大小(如 -XX:G1HeapRegionSize=4m)。
- -XX
arallelGCThreads:并行GC线程数(默认CPU核数)。
- -XX:InitiatingHeapOccupancyPercent:G1触发并发周期的堆占用阈值(默认45%)。
3. GC日记与分析
- -Xloggc:<file>:输出GC日记到文件。
- -XX:+PrintGCDetails:打印具体GC信息。
- -XX:+PrintGCDateStamps:表现GC发生的时间戳。
- -XX:+UseGCLogFileRotation:GC日记轮转(共同-XX:NumberOfGCLogFiles=5和-XX:GCLogFileSize=10M)。
三、故障诊断与监控
1. 内存溢出(OOM)处理
- -XX:+HeapDumpOnOutOfMemoryError:OOM时生成堆快照。
- -XX:HeapDumpPath=<path>:指定堆快照生存路径。
2. 类加载监控
- -XX:+TraceClassLoading:跟踪类加载过程。
- -XX:+TraceClassUnloading:跟踪类卸载过程。
3. 调试参数
- -XX:NativeMemoryTracking=summary:监控堆外内存使用(通过jcmd <pid> VM.native_memory detail检察)。
- -XX:+PrintFlagsFinal:检察所有JVM参数的最终值。
四、其他优化参数
1. JIT编译器
- -XX:+TieredCompilation:分层编译(JDK8默认开启)。
- -XX:CompileThreshold:触发JIT编译的方法调用阈值。
2. 线程控制
- -Xss:线程栈大小(如 -Xss256k,默认1M)。
3. 禁用显式GC
- -XX:+DisableExplicitGC:禁用System.gc()调用(注意可能影响NIO直接内存回收)。
五、生产环境典范设置示例
- # 堆内存与GC(G1)
- -Xmx4g -Xms4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
- # 元空间限制与OOM诊断
- -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs
- # GC日志
- -Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
复制代码 六、答复模板
- 分类阐明:先按内存、GC、监控等模块分类,避免遗漏。
- 焦点参数:重点阐明-Xmx、-Xms、-XX:+UseG1GC等高频参数。
- 场景结合:比方“高吞吐场景用ParallelGC,低延迟用G1/ZGC”。
- 调优原则:强调参数调解前需通过日记(如GC日记)和工具(如jstat、MAT)定位问题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |