JVM调优有什么履历吗?

藏宝库编辑 2024-10-3 10:09:19 78 0 来自 中国
要明⽩⼀点,全部的调优的⽬的都是为了⽤更⼩的硬件本钱到达更⾼的吞吐,JVM的调优也是⼀样,通过对垃圾网络器和内存分配的调优到达性能的最佳。
简朴的参数寄义


⾸先,必要知道⼏个告急的参数寄义。
1. -Xms设置初始堆的⼤⼩,-Xmx设置最⼤堆的⼤⼩
2. -XX:NewSize年轻代⼤⼩,-XX:MaxNewSize年轻代最⼤值,-Xmn则是相当于同时设置XX:NewSize和-XX:MaxNewSize为⼀样的值
3. -XX:NewRatio设置年轻代和年⽼代的⽐值,假如为3,表现年轻代与⽼年代⽐值为1:3,默认值为2
4. -XX:SurvivorRatio年轻代和两个Survivor的⽐值,默认8,代表⽐值为8:1:1
5. -XXretenureSizeThreshold 当创建的对象高出指定⼤⼩时,直接把对象分配在⽼年代。
6. -XX:MaxTenuringThreshold设定对象在Survivor复制的最⼤年事阈值,高出阈值转移到⽼年代
7. -XX:MaxDirectMemorySize当Direct ByteBuffer分配的堆外内存到达指定⼤⼩后,即触发Full GC
调优

1. 为了打印⽇志⽅便排查题目最好开启GC⽇志,开启GC⽇志对性能影响微乎其微,但是能资助我们快速排查定位题目。-XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:gc.log
2. ⼀般设置-Xms=-Xmx,这样可以得到固定⼤⼩的堆内存,淘汰GC的次数和耗时,可以使得堆相对稳固
3. -XX:+HeapDumpOnOutOfMemoryError让JVM在发⽣内存溢出的时间⾃动⽣成内存快照,⽅便排查题目
4. -Xmn设置新⽣代的⼤⼩,太⼩会增长YGC,太⼤会减⼩⽼年代⼤⼩,⼀般设置为整个堆的1/4到1/3
5. 设置-XX:+DisableExplicitGC禁⽌体系System.gc(),防⽌⼿动误触发FGC造成题目
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:50, Processed in 0.177244 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表