java 虛擬機(jī)參數(shù)配置詳解_第1頁
java 虛擬機(jī)參數(shù)配置詳解_第2頁
java 虛擬機(jī)參數(shù)配置詳解_第3頁
java 虛擬機(jī)參數(shù)配置詳解_第4頁
java 虛擬機(jī)參數(shù)配置詳解_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、堆大小設(shè)置JVM中最大堆大小有三方面限制:相關(guān)操作系統(tǒng)的數(shù)據(jù)模型(32-bt還是64-bit限制;系統(tǒng)的可用虛擬內(nèi)存限制;系統(tǒng)的可用物理內(nèi)存限制。32位系統(tǒng)下,一般限制在1.5G2G;64為操作系統(tǒng)對(duì)內(nèi)存無限制。我在Windows Server 2003系統(tǒng),3.5G物理內(nèi)存,JDK5.0下測試,最大可設(shè)置為1478m。典型設(shè)置:java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:設(shè)置JVM最大可用內(nèi)存為3550M。-Xms3550m:設(shè)置JVM促使內(nèi)存為3550m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。-Xmn

2、2g:設(shè)置年輕代大小為2G。整個(gè)堆大小=年輕代大小 + 年老代大小+ 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會(huì)減小年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。-Xss128k:設(shè)置每個(gè)線程的堆棧大小。JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K。更具應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成,經(jīng)驗(yàn)值在30005000左右。java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4-XX:S

3、urvivorRatio=4 -XX:MaxPermSize=16m-XX:MaxTenuringThreshold=0-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū)與年老代的比值(除去持久代。設(shè)置為4,則年輕代與年老代所占比值為1: 4,年輕代占整個(gè)堆棧的1/5-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6-XX:MaxPermSize=16m:設(shè)置持久代大小為16m。-XX:MaxTenuringThre

4、shold=0:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過Survivor區(qū),直接進(jìn)入年老代。對(duì)于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概論。回收器選擇JVM給了三種選擇:串行收集器、并行收集器、并發(fā)收集器,但是串行收集器只適用于小數(shù)據(jù)量的情況,所以這里的選擇主要針對(duì)并行收集器和并發(fā)收集器。默認(rèn)情況下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在啟動(dòng)時(shí)加入相應(yīng)參數(shù)。JDK5.0以后,JVM會(huì)根據(jù)當(dāng)前系統(tǒng)配置進(jìn)行判斷。吞吐量優(yōu)先的并行收集

5、器如上文所述,并行收集器主要以到達(dá)一定的吞吐量為目標(biāo),適用于科學(xué)技術(shù)和后臺(tái)處理等。典型配置:java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20-XX:+UseParallelGC:選擇垃圾收集器為并行收集器。此配置僅對(duì)年輕代有效。即上述配置下,年輕代使用并發(fā)收集,而年老代仍舊使用串行收集。-XX:ParallelGCThreads=20:配置并行收集器的線程數(shù),即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最好配置與處理器數(shù)目相等。java -Xmx3550m -Xms3550m -

6、Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC-XX:+UseParallelOldGC:配置年老代垃圾收集方式為并行收集。JDK6.0支持對(duì)年老代并行收集。java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100-XX:MaxGCPauseMillis=100:設(shè)置每次年輕代垃圾回收的最長時(shí)間,如果無法滿足此時(shí)間,JVM會(huì)自動(dòng)調(diào)整年輕代大小,以滿足此值。java -Xm

7、x3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy-XX:+UseAdaptiveSizePolicy:設(shè)置此選項(xiàng)后,并行收集器會(huì)自動(dòng)選擇年輕代區(qū)大小和相應(yīng)的Survivor區(qū)比例,以達(dá)到目標(biāo)系統(tǒng)規(guī)定的最低相應(yīng)時(shí)間或者收集頻率等,此值建議使用并行收集器時(shí),一直打開。響應(yīng)時(shí)間優(yōu)先的并發(fā)收集器如上文所述,并發(fā)收集器主要是保證系統(tǒng)的響應(yīng)時(shí)間,減少垃圾收集時(shí)的停頓時(shí)間。適用于應(yīng)用服務(wù)器、電信領(lǐng)域等。典型配置:java -Xmx3550m -Xms3

8、550m -Xmn2g -Xss128k-XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC:設(shè)置年老代為并發(fā)收集。測試中配置這個(gè)以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此時(shí)年輕代大小最好用-Xmn設(shè)置。-XX:+UseParNewGC:設(shè)置年輕代為并行收集??膳cCMS收集同時(shí)使用。JDK5.0以上,JVM會(huì)根據(jù)系統(tǒng)配置自行設(shè)置,所以無需再設(shè)置此值。java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-XX:+UseCon

9、cMarkSweepGC-XX:CMSFullGCsBeforeCompaction=5-XX:+UseCMSCompactAtFullCollection-XX:CMSFullGCsBeforeCompaction:由于并發(fā)收集器不對(duì)內(nèi)存空間進(jìn)行壓縮、整理,所以運(yùn)行一段時(shí)間以后會(huì)產(chǎn)生“碎片”,使得運(yùn)行效率降低。此值設(shè)置運(yùn)行多少次GC以后對(duì)內(nèi)存空間進(jìn)行壓縮、整理。-XX:+UseCMSCompactAtFullCollection:打開對(duì)年老代的壓縮??赡軙?huì)影響性能,但是可以消除碎片輔助信息JVM提供了大量命令行參數(shù),打印信息,供調(diào)試使用。主要有以下一些: -XX:+PrintGC輸出形式:G

10、C 118250K-113543K(130112K, 0.0094143 secs Full GC 121376K-10414K(130112K, 0.0650971 secs-XX:+PrintGCDetails輸出形式:GC DefNew: 8614K-781K(9088K, 0.0123035 secs 118250K-113543K(130112K, 0.0124633 secsGC DefNew: 8614K-8614K(9088K, 0.0000665 secsTenured: 112761K-10414K(121024K, 0.0433488 secs121376K-10414K

11、(130112K, 0.0436268 secs-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可與上面兩個(gè)混合使用輸出形式:11.851: GC 98328K-93620K(130112K, 0.0082960 secs-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中斷的執(zhí)行時(shí)間??膳c上面混合使用輸出形式:Application time: 0.5291524 seconds-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期間程序暫停的時(shí)間??膳c

12、上面混合使用輸出形式:Total time for which application threads were stopped: 0.0468229 seconds-XX:PrintHeapAtGC:打印GC前后的詳細(xì)堆棧信息輸出形式:34.702: GC Heap before gc invocations=7:def new generation total 55296K, used 52568K 0x1ebd0000,0x227d0000, 0x227d0000eden space 49152K, 99% used 0x1ebd0000, 0x21bce430, 0x21bd0000

13、from space 6144K, 55% used 0x221d0000, 0x22527e10, 0x227d0000 to space 6144K, 0% used 0x21bd0000, 0x21bd0000, 0x221d0000 tenured generation total 69632K, used 2696K 0x227d0000,0x26bd0000, 0x26bd0000the space 69632K, 3% used 0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000compacting perm gen total 8192

14、K, used 2898K 0x26bd0000,0x273d0000, 0x2abd0000the space 8192K, 35% used 0x26bd0000, 0x26ea4ba8, 0x26ea4c00,0x273d0000ro space 8192K, 66% used 0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000rw space 12288K, 46% used 0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd000034.735: DefNew: 52568K-3433K(55296K, 0.

15、0072126 secs55264K-6615K(124928KHeap after gc invocations=8:def new generation total 55296K, used 3433K 0x1ebd0000,0x227d0000, 0x227d0000eden space 49152K, 0% used 0x1ebd0000, 0x1ebd0000, 0x21bd0000 from space 6144K, 55% used 0x21bd0000, 0x21f2a5e8, 0x221d0000 to space 6144K, 0% used 0x221d0000, 0x2

16、21d0000, 0x227d0000 tenured generation total 69632K, used 3182K 0x227d0000,0x26bd0000, 0x26bd0000the space 69632K, 4% used 0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000compacting perm gen total 8192K, used 2898K 0x26bd0000,0x273d0000, 0x2abd0000the space 8192K, 35% used 0x26bd0000, 0x26ea4ba8, 0x26

17、ea4c00, 0x273d0000ro space 8192K, 66% used 0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000rw space 12288K, 46% used 0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000, 0.0757599 secs-Xloggc:filename:與上面幾個(gè)配合使用,把相關(guān)日志信息記錄到文件以便分析。常見配置匯總堆設(shè)置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:設(shè)置年輕代大小-XX:NewRatio=n:設(shè)置年輕代和年老代的比值。如

18、:為3,表示年輕代與年老代比值為1:3,年輕代占整個(gè)年輕代年老代和的1/4-XX:SurvivorRatio=n:年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值。注意Survivor區(qū)有兩個(gè)。如:3,表示Eden:Survivor=3:2,一個(gè)Survivor 區(qū)占整個(gè)年輕代的1/5-XX:MaxPermSize=n:設(shè)置持久代大小收集器設(shè)置-XX:+UseSerialGC:設(shè)置串行收集器-XX:+UseParallelGC:設(shè)置并行收集器-XX:+UseParalledlOldGC:設(shè)置并行年老代收集器-XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器垃圾回收統(tǒng)計(jì)信息-XX:+

19、PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xloggc:filename并行收集器設(shè)置-XX:ParallelGCThreads=n:設(shè)置并行收集器收集時(shí)使用的CPU數(shù)。并行收集線程數(shù)。-XX:MaxGCPauseMillis=n:設(shè)置并行收集最大暫停時(shí)間-XX:GCTimeRatio=n:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比。公式為1/(1+n并發(fā)收集器設(shè)置-XX:+CMSIncrementalMode:設(shè)置為增量模式。適用于單CPU情況。-XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù)。并行收集線程數(shù)。四、調(diào)優(yōu)總結(jié)年輕代大小選擇響應(yīng)時(shí)間優(yōu)先的應(yīng)用:盡可能設(shè)大,直到接近系統(tǒng)的最低響應(yīng)時(shí)間限制(根據(jù)實(shí)際情況選擇。在此種情況下,年輕代收集發(fā)生的頻率也是最小的。同時(shí),減少到達(dá)年老代的對(duì)象。吞吐量優(yōu)先的應(yīng)用:盡可能的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論