JVM 调优总结 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt 还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制
32 位系统下,一般限制在1
5G~2G;64 为操作系统对内存无限制
我在 Windows Server 2003 系统,3
5G 物理内存,JDK5
0 下测试,最大可设置为 1478m
典型设置: 1
o java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM 最大可用内存为 3550M
-Xms3550m:设置JVM 促使内存为 3550m
此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
-Xmn2g:设置年轻代大小为 2G
整个 JVM 内存大小=年轻代大小 + 年老代大小 + 持久代大小
持久代一般固定大小为 64m,所以增大年轻代后,将会减小年老代大小
此值对系统性能影响较大,Sun 官方推荐配置为整个堆的3/8
-Xss128k:设置每个线程的堆栈大小
0 以后每个线程堆栈大小为1M,以前每个线程堆栈大小为 256K
更具应用的线程所需内存大小进行调整
在相同物理内存下,减小这个值能生成更多的线程
但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在 3000~5000左右
o java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 -XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与年老代的比值(除去持久代)
设置为 4,则年轻代与年老代所占比值为 1: