1、堆内存
(1)调整最大堆内存和最小堆内存
-Xmx:堆内存最大值(默认值是物理内存的1/4(<1GB))
–Xms:初始堆内存最小值(默认值是物理内存的1/64(<1GB))
默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。
实际工作当中,这两个参数,一般设置值都是一样,减少频繁的申请内存,减少频繁的GC导致的内存空间的抖动。
(2)设置年轻代大小
-Xmn:年轻代;Sun官方推荐配置为整个java堆的3/8。
jdk1.3或1.4
-XX:NewSize:设置年轻代大小
-XX:MaxNewSize:设置年轻代最大值
(3)设置年轻代与年老代比值
-XX:NewRatio :年轻代与老年代的比值。
新生代:老年代=1:4,即新生代占整个堆的1/5。
(4)调整幸存取的比值
-XX:SurvivorRatio:两个Survivor区和eden的比值,一般是2:8
(5)GC日志
-XX:+PrintGCDetails :打印出GC的详细日志
(6)查看GC错误日志
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpPath=d:/a.dump:OOM时导出堆到文件,导出OOM到a.dump文件中,利用jdk自带的jvisualvm.exe查看该错误信息。
(7)永久代参数调整
-XX:PermSize:初始空间(默认为物理内存的1/64)
-XX:MaxPermSize:最大空间(默认为物理内存的1/4)
2、栈参数调优
(1)调整每个线程栈空间的大小
-Xss:设置每个线程栈空间的大小。经验值在3000~5000K左右。
(2)设置线程栈的大小
-XXThreadStackSize:设置线程栈的大小
3、JVM其他参数
(1)设置内存页的大小
-XXThreadStackSize:
(2)设置原始类型的快速优化
-XX:+UseFastAccessorMethods:
(3)设置关闭手动GC
-XX:+DisableExplicitGC:
(4)设置垃圾最大年龄
-XX:MaxTenuringThreshold:
......