网站首页 > 文章精选 正文
1、内存调优
堆内存设置:通过 -Xms 和-Xmx 参数调整初始和最大堆内存大小
-Xms :初始堆大小(如 -Xms512M)
-Xmx :最大堆大小(如 - Xmx2048M)
调整新生代和老年代的比例:使用 -XX:NewRaio 调整新生代和老年代的比例(如 -xx:NewRatio=2 表示新生代占1/3,老年代占 2/3)
Eden区和Survivor区比例:通过-XX:SurvivorRatio 设置Eden与Survivor 区的比例(例如 -XX:SurviroRatio=8 表示Eden区占80%,Survivor区各占10%)
2、垃圾回收调优
选择垃圾回收器(不同场景下下选择不同的垃圾回收器)
串行回收器:--XX:+UseSerialGC,(适用于单线程环境)
并行回收器:-XX:+UseParallelGC,(适用于多核CPU)。
CMS回收器:--XX:UseConcMarkSweepGc (适用与低延迟场景)
G1回收器: --XX:+UseG1Gc (适用于大内存和低延迟的场景)
ZGC/Shenandoah: --XX:+UseZGC 或--XX:+UserShenandoahGc(适用于超大堆内存和极低延迟场景)
3、线程栈调优
线程栈大小:通过-Xss设置线程栈带下(如 -Xss512K),避免栈溢出或内存浪费
4、JIT编程器调优
启用/禁用JIT: -XX:+UseCompressedOops 启用压缩指针,-XX:-TieredCompilation 禁用分层编译。
调整编译阈值:通过 -XX:CompileThreshold 设置方法调用次数达到多少时触发JIT编译(如 -XX:CompileThreshold=10000)
5、类加载器调优
类元数据空间:通过 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize 设置元数据空间大小(如 -XX:MetaspaceSize=128m,-XX:MaxMetaspaceSize=512m)
6、监控与诊断
启用GC日志: -Xloggc:<file> 记录GC日志,-XX:+printGcDetails 打印详细的GC信息
堆转储:--XX:+
HeapDumponOutOfMemoryError 在内存溢出时生成堆转储文件, -XX:HeapDumpPath=<path> 指定转储路径
JVM监控工具适用 jstat、jmap、jstack 等工具监控JVM状态
7、其他调优
禁用偏向锁: --XX:UseBiasedLocking 在高并发场景下禁用偏向锁,减少锁竞争
调整TLAB 大小: --XX:TLABSize 设置线程本地分配缓冲区大小,优化小对象分配
调优步骤
1、基准测试:确定性能瓶颈
2、监控分析:适用工具监控JVM运行状态
3、参数调整: 根据分析结果调整JVM参数
4、验证优化: 重新测试,验证优化结果
5、持续优化:根据应用变化持续调整参数
JVM 调优工具
VisuakVM :监控JVM运行状态
JConsole: 提供JVM 的实时监控
GCViewer 分析GC日志
JProfiler: 深入分析应用性能
猜你喜欢
- 2025-07-23 JVM中哪些是线程共享区,哪些是线程独占区
- 2025-07-23 线上服务 FGC 问题排查,看这篇就够了
- 2025-07-23 JVM运行时内存区域、堆内存分段机制
- 2025-07-23 JVM运行数据区深度解析(jvm运行时区域)
- 2025-07-23 开发者必备!线上内存泄漏排查的 8 个 Linux 实战工具
- 2025-07-23 内存溢出满分排查步骤,看完不用担心拿不到Offer了
- 2025-07-23 关于JVM调优,看这篇就够了(jvm调优实战简书)
- 2025-07-23 那么大个对象的垃圾回收有什么不同
- 2025-07-23 GC分代年龄为什么是15?(对象gc的分代年龄保存在)
- 2025-07-23 JVM参数调优,一文让你搞懂,再也不为应用操心了!
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)