1: heap size 整个堆的大小=年轻代大小+老年代大小+持久代大小
指定 jvm 的最大 heap 大小 , 如 :-Xmx=2g
b: -Xms<n>
指定 jvm 的最小 heap 大小 , 如 :-Xms=2g , 高并发应用, 建议和-Xmx一样, 防止因为内存收缩/突然增大带来的性能影响。
c: -Xmn<n>
指定 jvm 中 New Generation 的大小 , 如 :-Xmn256m。 这个参数很影响性能, 如果你的程序需要比较多的临时内存,建议设置到512M, 如果用的少, 尽量降低这个数值, 一般来说128/256足以使用了。
d: -XX:PermSize=<n>
指定 jvm 中 Perm Generation 的最小值 , 如 :-XX:PermSize=32m。 这个参数需要看你的实际情况,。可以通过jmap 命令看看到底需要多少。
e: -XX:MaxPermSize=<n>
指定 Perm Generation 的最大值 , 如 :-XX:MaxPermSize=64m
f: -Xss<n>
指定线程桟大小 , 如 :-Xss128k, 一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为,请考虑设置到512K/1M。 这个需要全面的测试才能知道。 不过,256K已经很大了。 这个参数对性能的影响比较大的。
g: -XX:NewRatio=<n>
指定 jvm 中 Old Generation heap size 与 New Generation 的比例 , 在使用 CMS GC 的情况下此参数失效 , 如 :-XX:NewRatio=2
h: -XX:SurvivorRatio=<n>
New Generation 大小= Eden Space 大小+2个 Survivor Space大小
i: -XX:MinHeapFreeRatio=<n>
指定 jvm heap 在使用率小于 n 的情况下 ,heap 进行收缩 ,Xmx==Xms 的情况下无效 , 如 :-XX:MinHeapFreeRatio=30
j: -XX:MaxHeapFreeRatio=<n>
指定 jvm heap 在使用率大于 n 的情况下 ,heap 进行扩张 ,Xmx==Xms 的情况下无效 , 如 :-XX:MaxHeapFreeRatio=70
k: -XX:LargePageSizeInBytes=<n>
指定 Java heap 的分页页面大小 , 如 :-XX:LargePageSizeInBytes=128m
1.
堆大小设置
JVM
中最大堆大小有三方面限制:
相关操作系统的数据模型
(
32-bt
还是
64-bit
)
限
制;系统的可用虚拟内存限制;系统的可用物理内存限制。
32
位系统下,一般限制
在
1.5G~2G
;
64
为操作系统对内存无限制。我在
Windows
Server
2003
系统,
3.5
G
物理内存,
JDK5.0
下测试,最大可设置为
1478m
。
典型设置:
o
java
-Xmx3550m -Xms3550m -Xmn2g
-Xss128k
-Xmx3550m
:设置
JVM
最大可用内存为
3550M
。
-Xms3550m
:设置
JVM
促使内存为
3550m
。此值可以设置与
-Xmx
相同,
以避免每次垃圾回收完成后
JVM
重新分配内存。
-Xmn2g
:设置年轻代大小为
2G
。
整个堆大小
=
年轻代大小
+
年老代大小
+
持久代大小
。
持久代一般固定大小为
64m
,
所以增大年轻代后,
将会减小
年老代大小。此值对系统性能影响较大,
Sun
官方推荐配置为整个堆的
3/
8
。
-Xss128k
:设置每个线程的堆栈大小。
JDK5.0
以后每个线程堆栈大小为
1M
,以前每个线程堆栈大小为
256K
。更具应用的线程所需内存大小进行调
整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一
个进程内的线程数还是有限制的,不能无限生成,经验值在
3000~5000
左
右。
o
java
-Xmx3550m -Xms3550m -Xss128k
-XX:NewRatio=4 -XX:Su
rvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThres
hold=0
-XX:NewRatio=4
:
设置年轻代(包括
Eden
和两个
Survivor
区)与年
1.
堆大小设置
JVM
中最大堆大小有三方面限制:
相关操作系统的数据模型
(
32-bt
还是
64-bit
)
限
制;系统的可用虚拟内存限制;系统的可用物理内存限制。
32
位系统下,一般限制
在
1.5G~2G
;
64
为操作系统对内存无限制。我在
Windows
Server
2003
系统,
3.5
G
物理内存,
JDK5.0
下测试,最大可设置为
1478m
。
典型设置:
o
java
-Xmx3550m -Xms3550m -Xmn2g
-Xss128k
-Xmx3550m
:设置
JVM
最大可用内存为
3550M
。
-Xms3550m
:设置
JVM
促使内存为
3550m
。此值可以设置与
-Xmx
相同,
以避免每次垃圾回收完成后
JVM
重新分配内存。
-Xmn2g
:设置年轻代大小为
2G
。
整个堆大小
=
年轻代大小
+
年老代大小
+
持久代大小
。
持久代一般固定大小为
64m
,
所以增大年轻代后,
将会减小
年老代大小。此值对系统性能影响较大,
Sun
官方推荐配置为整个堆的
3/
8
。
-Xss128k
:设置每个线程的堆栈大小。
JDK5.0
以后每个线程堆栈大小为
1M
,以前每个线程堆栈大小为
256K
。更具应用的线程所需内存大小进行调
整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一
个进程内的线程数还是有限制的,不能无限生成,经验值在
3000~5000
左
右。
o
java
-Xmx3550m -Xms3550m -Xss128k
-XX:NewRatio=4 -XX:Su
rvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThres
hold=0
-XX:NewRatio=4
:
设置年轻代(包括
Eden
和两个
Survivor
区)与年