-Xss規定了每一個線程堆棧的大小。通常狀況下256K是足夠了。影響了此進程中併發線程數大小。默認JDK1.4中是256K,JDK1.5+是1M -Xms初始的Heap的大小。java
-Xmx最大Heap的大小。併發
在不少狀況下,-Xms和-Xmx設置成同樣的。這麼設置,是由於當Heap不夠用時,會發生內存抖動,影響程序運行穩定性。性能
堆大小設置 JVM中最大堆大小有三方面限制:相關操做系統的數據模型限制;系統的可用虛擬內存限制;系統的可用物理內存限制。32位系統下,通常限制在1.5G-2G;64位操做系統對內存無限制。操作系統
典型設置: 一、Java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:設置JVM最大可用內存爲3550M。 -Xms3550m:設置JVM促使內存爲3550M。此值能夠設置與-Xmx相同,以免每次垃圾回收完成後JVM從新分配內存。 -Xmn2g:設置年輕代大小爲2G。整個堆大小=年輕代大小+年老代大小+持久代大小。持久代通常固定大小爲64m,因此增大年輕代後,將會減小年老大大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。 -Xss128k:設置每一個線程的堆棧大小。JDK5.0之後每一個線程堆棧大小爲1M,之前每一個線程堆棧大小爲256K。線程
二、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:設置持久代大小爲16mio
-xx:MaxTenuringThreshold=0:設置垃圾最大年齡。若是設置爲0的話,則年輕代對象不通過Survivor區,直接進入年老代。對於年老代比較多的應用,能夠提升效率。若是將此值設置爲一個較大值,則年輕代對象會在Survivor區進行屢次複製,這樣能夠增長對象在年輕代存活的時間。效率