JVM 优化经验总结(JDK7,Hotspot虚拟机)
2023-04-29 20:48:04 0 举报
AI智能生成
JVM 优化经验总结(JDK7,Hotspot虚拟机)
作者其他创作
大纲/内容
JVM
有自己完善的硬件架构
处理器
堆栈
寄存器
指令系统
屏蔽具体操作系统信息,使得字节码可以在多种平台运行
把字节码解析成机器指令执行
堆内存
稳定的堆
-Xms和-Xmx大小设置一致
减少GC次数
增加每次GC时间
动荡的堆
不需要使用大内存时,压缩堆空间
堆小时GC时间短
可以设置空间最小空闲比例和最大空闲比例来控制堆内存压缩
参数
GC
其他
-Xmn2g
设置年轻代大小为2GB
-Xss128k
线程栈大小
小的线程栈可以支持更多的线程
-XX:MaxHeapFreeRatio=70
设置堆最大空闲比例
默认值70
堆空间的空闲内存大于这个数值时,JVM压缩堆空间
-Xms=-Xmx时,本参数无效
-XX:MinHeapFreeRatio=40
设置堆最小空闲比例
默认值40
堆空间的空闲内存小于这个数值时,JVM扩展堆空间
-Xms=-Xmx时,本参数无效
-XX:TargetSurvivorRatio=90
提高form区的利用率
from区90%时,再将对象送入老年代
-XX:PetenureSizeThreshold=15
设置大对象直接进入老年代的阈值
对象的大小超过这个值时,直接进入老年代
-XX:MaxTenuringThreshold=15
设置年轻对象经历N此GC后,进入老年代
默认值15
并不意味着一定是这个年龄才进入老年代,JVM会根据内存实际使用情况动态计算
-XX:+LargePageSizeInBytes=256m
使用大内存分页
此处设置页大小为256m
-XX:+HeapDumpOnOutOfMemoryError
让JVM在发生内存溢出时自动的生成堆内存快照
-XX:MaxDirectMemorySize
用于配置直接内存大小,如果不设置,默认值为最大堆空间
1.8参数
-XX:MetaspaceSize
代替-XX:PermSize
在JDK1.8中已经使用元空间代替永久代
-XX:MaxMetaspaceSize
代替-XX:MaxPermSize
在JDK1.8中已经使用元空间代替永久代
将新对象预留在年轻代
Full GC 的成本远远高于 Minor GC,某些情况下尽可能将对象分配在年轻代
内存空间不紧张时JVM会尝试在 Eden 区分配对象
内存空间紧张时JVM会将部分年轻代对象提前向老年代压缩
JVM参数调优时分配一个合理的年轻代空间以避免此情况
让大对象进入老年代
大对象出现在年轻代可能扰乱年轻代GC,破坏年轻代原有对象结构
为了有足够空间容纳大对象,JVM不得不将年轻代中的对象挪到老年代
可能会导致移动大量年轻代的小对象到老年代,对GC不利
短命的大对象是GC的灾难,打乱了GC的基本思路,尽量避免使用
设置对象进入老年代的年龄
年轻代的对象经过N次GC(N==年龄)后,进入老年代
对象在 Eden区经历第一次GC后存活的,年龄+1,移动到 Survivor区
吞吐量优先
尽可能减少系统执行垃圾回收的总时间
可考虑关注系统吞吐量的并行回收收集器
示例参数:–Xmx3800m –Xms3800m –Xmn2G –Xss128k –XX:+UseParallelGC 13;13;–XX:ParallelGC-Threads=20 –XX:+UseParallelOldGC
尝试使用大的内存分页
Solaris系统中,JVM可以支持 Large Page Size
使用大的内存分页可以增强 CPU 的内存寻址能力,从而提升性能
过大的内存分页会导致JVM在计算Heap内部分区(perm,new,old)内存占用比例时,出现超出正常值的划分
最坏情况下某个区会多占用一个页的大小
示例:java –Xmx2506m –Xms2506m –Xmn1536m –Xss128k –XX:++UseParallelGC13;13;–XX:ParallelGCThreads=20 –XX:+UseParallelOldGC –XX:+LargePageSizeInBytes=256m
使用非占用的垃圾回收器
降低GC时的停顿
首先考虑使用关注系统停顿的 CMS 回收器
减少 Full GC 次数
尽可能将对象留在年轻代
年轻代 Minor GC 的成本远远小于老年代的 Full GC
示例:java –Xmx3550m –Xms3550m –Xmn2g –Xss128k –XX:ParallelGCThreads=2013;13;–XX:+UseConcMarkSweepGC –XX:+UseParNewGC –XX:+SurvivorRatio=8 –XX:TargetSurvivorRatio=9013;13;–XX:MaxTenuringThreshold=31
0 条评论
下一页