一、整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
堆设置
-Xms: 初始堆大小
-Xmx: 最大堆大小
---------------------
-XX:NewSize=n: 设置年轻代大小
-XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
---------------------
-XX:SurvivorRatio=n:
年轻代中Eden区与两个Survivor区的比值。
注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
----------------------
-XX:
PermSize=n:设置持久代初始化大小
MaxPermSize=n:设置持久代大小
示例:
-Xms300M -Xmx600M
-XX:NewSize=80M -XX:NewRatio=3 -XX:SurvivorRatio=3
-XX:PermSize=60M -XX:MaxPermSize=120M
则:
整个JVM内存大小(440M)=年轻代大小(80M) + 年老代大小(240M) + 持久代大小(120M)。
年轻代大小(80M)= Eden区(48M)+Survivor区(16M)+Survivor区(16M)
根据这些参数,配置对应的服务启动参数。
亲测:
二、垃圾回收器选择
1吞吐量优先的并行收集器,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。
示例: -XX:+UseParallelGC -XX:ParallelGCThreads=1
-XX:+UseParallelGC:
选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
-XX:ParallelGCThreads=1:
配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。
2响应时间优先的并发收集器,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间。
适用于应用服务器、电信领域等。
示例: -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=1
-XX:+UseConcMarkSweepGC:
设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。
所以,此时年轻代大小最好用-Xmn设置。
-XX:+UseParNewGC:
设置年轻代为并行收集。
可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
摘自:http://unixboy.iteye.com/blog/174173/