WEBLOGIC
启动
JVM
参数设置经验
2011-11-01 08:41:46
分类:
Linux
1.
堆大小设置
JVM
中最大堆大小有三方面限制:相关操作系统的数据模型(
32-bt
还是
64-bit
)限制;系统的可用虚拟
内存限制;系统的可用物理内存限制。
32
位系统下,一般限制在
1.5G~2G
;
64
为操作系统对内存无限制。
我在
Windows Server 2003
系统,
3.5G
物理内存,
JDK5.0
下测试,最大可设置为
1478m
。
典型设置:
o java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m
:设置
JVM
最大可用内存为
3550M
。
-Xms3550m
:
设置
JVM
促使内存为
3550m
。
此值可以设置与
-Xmx
相同,
以避免每次垃圾回收完成后
JVM
重新
分配内存。
-Xmn2g
:设置年轻代大小为
2G
。整个
JVM
内存大小
=
年轻代大小
+
年老代大小
+
持久代大小。持久代一
般固定大小为
64m
,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,
Sun
官方推荐配
置为整个堆的
3/8
。
-Xss128k
:
设置每个线程的堆栈大小。
JDK5.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
:
4
,年轻代占整个堆栈的
1/5
-XX:SurvivorRatio=4
:设置年轻代中
Eden
区与
Survivor
区的大小比值。设置为
4
,则两个
Survivor
区
与一个
Eden
区的比值为
2:4
,一个
Survivor
区占整个年轻代的
1/6
-XX:MaxPermSize=16m:
设置持久代大小为
16m
。
-XX:MaxTenuringThreshold=0
:
设置垃圾最大年龄。
如果设置为
0
的话,
则年轻代对象不经过
Survivor
区,
直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对
象会在
Survivor
区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概
论。
2.
回收器选择
JVM
给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,
所以这里的选择主要针对并行收集器和并发收集器。默认情况下,
JDK5.0
以前都是使用串行收集器,如果
想使用其他收集器需要在启动时加入相应参数。
JDK5.0
以后,
JVM
会根据当前系统配置
进行判断。
1.
吞吐量优先的并行收集器
如上文所述,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。