JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu) 3.Sun HotSpot 1.4.1 JVM堆大小的調(diào)整
3.Sun HotSpot 1.4.1 JVM堆大小的調(diào)整Sun HotSpot 1.4.1使用分代收集器,它把堆分為三個(gè)主要的域:新域、舊域以及永久域。Jvm生成的所有新對象放在新域中。一旦對象經(jīng)歷了一定數(shù)量的垃圾收集循環(huán)后,便獲得使用期并進(jìn)入舊域。在永久域中jvm則存儲(chǔ)class和method對象。就配置而言,永久域是一個(gè)獨(dú)立域并且不認(rèn)為是堆的一部分。
下面介紹如何控制這些域的大小??墒褂?Xms和-Xmx 控制整個(gè)堆的原始大小或最大值。
下面的命令是把初始大小設(shè)置為128M:
java –Xms128m
–Xmx256m為控制新域的大小,可使用-XX:NewRatio設(shè)置新域在堆中所占的比例。
下面的命令把整個(gè)堆設(shè)置成128m,新域比率設(shè)置成3,即新域與舊域比例為1:3,新域?yàn)槎训?/4或32M:
java –Xms128m –Xmx128m
–XX:NewRatio =3可使用-XX:NewSize和-XX:MaxNewsize設(shè)置新域的初始值和最大值。
下面的命令把新域的初始值和最大值設(shè)置成64m:
java –Xms256m –Xmx256m –Xmn64m
永久域默認(rèn)大小為4m。運(yùn)行程序時(shí),jvm會(huì)調(diào)整永久域的大小以滿足需要。每次調(diào)整時(shí),jvm會(huì)對堆進(jìn)行一次完全的垃圾收集。
使用-XX:MaxPerSize標(biāo)志來增加永久域搭大小。在WebLogic Server應(yīng)用程序加載較多類時(shí),經(jīng)常需要增加永久域的最大值。當(dāng)jvm加載類時(shí),永久域中的對象急劇增加,從而使jvm不斷調(diào)整永久域大小。為了避免調(diào)整,可使用-XX:PerSize標(biāo)志設(shè)置初始值。
下面把永久域初始值設(shè)置成32m,最大值設(shè)置成64m。
java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m
默認(rèn)狀態(tài)下,HotSpot在新域中使用復(fù)制收集器。該域一般分為三個(gè)部分。第一部分為Eden,用于生成新的對象。另兩部分稱為救助空間,當(dāng)Eden充滿時(shí),收集器停止應(yīng)用程序,把所有可到達(dá)對象復(fù)制到當(dāng)前的from救助空間,一旦當(dāng)前的from救助空間充滿,收集器則把可到達(dá)對象復(fù)制到當(dāng)前的to救助空間。From和to救助空間互換角色。維持活動(dòng)的對象將在救助空間不斷復(fù)制,直到它們獲得使用期并轉(zhuǎn)入舊域。使用-XX:SurvivorRatio可控制新域子空間的大小。
同NewRation一樣,SurvivorRation規(guī)定某救助域與Eden空間的比值。比如,以下命令把新域設(shè)置成64m,Eden占32m,每個(gè)救助域各占16m:
java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2
posted on 2006-06-04 23:16 junky 閱讀(396) 評論(0) 編輯 收藏 所屬分類: java