第58節(jié)java虛擬機(jī)介紹程序啟動參數(shù)設(shè)置優(yōu)化_第1頁
第58節(jié)java虛擬機(jī)介紹程序啟動參數(shù)設(shè)置優(yōu)化_第2頁
第58節(jié)java虛擬機(jī)介紹程序啟動參數(shù)設(shè)置優(yōu)化_第3頁
第58節(jié)java虛擬機(jī)介紹程序啟動參數(shù)設(shè)置優(yōu)化_第4頁
第58節(jié)java虛擬機(jī)介紹程序啟動參數(shù)設(shè)置優(yōu)化_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

java虛擬機(jī)介紹:java程序啟動參數(shù)設(shè)置優(yōu)一、GCJVMGC(GarbageCollection(generationalcollectionSUNVMJ2SE1.2generationtenuredyounggenerationobjectdieyounggeneration了之后,將minorcollection(YGC)。在minorcollection后存活的object會被移動到tenured滿之后觸發(fā)(Fullgc)會觸發(fā)整個heapyounggeneration。permanetgeneration定,主要存放classloader信息。younggeneration有eden、2個survivor區(qū)域組成。其中一個survivor區(qū)域一直是空的,是eden區(qū)域和另一個survivor區(qū)域在下一次copycollection后活著的objecy的目的地。object在survivo區(qū)域被直到轉(zhuǎn)移到tenured區(qū)。我們要盡量減少Fullgc的次數(shù)(tenuredgeneration一般比較大,收集的時間較長,頻繁的Fullgc會導(dǎo)致應(yīng)用的性能收到嚴(yán)重的影響)。堆內(nèi)存GC:JVM(采用分代回收的策略),用較高的頻率對年輕的對象(younggeneration)進(jìn)行YGC,而對老對象(tenuredgeneration)較少(tenuredgeneration滿了后才進(jìn)行)進(jìn)行FullGC。這樣就不需要每次GC都將內(nèi)存中所有對象都檢查一遍。非堆內(nèi)存不GC:GC不會在主程序運行期對PermGenSpace中有很多CLASSpermgenspace出現(xiàn)PermGenSpace錯誤。內(nèi)存申請、對象衰老過JVM會試圖為相關(guān)Java對象在Eden當(dāng)Eden空間足夠時,內(nèi)存申請結(jié)束。否則到下一步;collection放入新對象,則試圖將部分Eden中活躍對象放入Survivor區(qū);Survivor區(qū)被用來作為Eden及oldOLDSurvivor會被移到Old區(qū),否則會被保留在Survivor區(qū);當(dāng)oldJVM會在old區(qū)進(jìn)行major完全收集后若Survivor及old區(qū)仍然無法存放從Eden過來的部分對象導(dǎo)致JVM無法在Eden區(qū)為新對象創(chuàng)建內(nèi)存區(qū)域,則出現(xiàn)"Outofmemory錯誤";eden。Minorcollectioneden和在用survivorspacecopy到空閑survivorspaceyounggeneration數(shù)配置)的minorcollection后,就會被移到oldgeneration中,稱為tenuring。GC類觸發(fā)條觸發(fā)時發(fā)生了什查看方eden空間清空Eden+fromsurvivor中所有noref的對象占用的內(nèi)將eden+fromsur中所有存活的對象copy到tosur中一些對象將晉升到old中:tosur放不下存活次數(shù)超過turningthreshold中的重新計算tenuringthreshold(serialparallelGC重新調(diào)整Eden和from的大小(parallelGC會觸發(fā)此全過程暫停應(yīng)是否為多線程處GC決jstat–gc進(jìn)ID間隔old空間不足perm空間不足RMI等的定時YGC時的悲觀dumplive的內(nèi)清空heap中noref的對象permgen中已經(jīng)被卸載的classloader中加載的class信如配置了CollectGenOFirst,則先觸發(fā)YGC(serial觸發(fā)YGC(serialGC)全過程暫停應(yīng)是否為多線程處GC決是否壓縮jstat–gc進(jìn)ID間隔permanentgeneration空間不足會FullGC,仍然不夠會PermGenSpace錯誤二、JVM含默不管是YGC還是FullGC,GC過程中都會對導(dǎo)致程序運行斷,正確的選擇不同的含默-默認(rèn)(MinHeapRatio參數(shù)可以調(diào)整)40%時,JVM就會增大堆直到-Xmx的最大限制.-會減少堆直到-Xms-注意:此處的大小是(eden+2survivorspace).jmapheap中顯示的Newgen是不同的。整個堆大小=年輕代大小+年老代大小+持久代大小.此值對系統(tǒng)性能影響較大,Sun推薦配置為3/8-----JDK5.0以后每個線程堆棧大小為無限生成,3000~5000左一般小的用,如果,應(yīng)該是128k夠用的應(yīng)用建議使用256。這個較嚴(yán)格的。(長)和hrsckse似乎沒解釋中有這樣話-XssistranslatedinaVMnamed-ThreadStack(0meansusedefaultstacksize)[Sparc:512;Solarisx86:320(was256priorin5.0andearlier);Sparc64bit:Linuxamd64:1024(was05.0andearlier);allothers-年輕代(包括Eden和Survivor區(qū))與-XX:NewRatio=4表示年輕代與年棧1/5-Eden區(qū)的比2:8,一個Survivor區(qū)占整個年輕1/10-過大,會影響Perm--關(guān)-如果設(shè)置0的話,則年輕代對象不Survivor區(qū),直接進(jìn)入年老代.Survivor區(qū)進(jìn)行多存活時間,增加在年輕代即被回收的-加快---softlyreachableobjectswillremainaliveforsomeamountoftimeafterthelasttimetheywerereferenced.Thedefaultvalueisonesecondoflifetimepermegabyteinthe-0單位字節(jié)采用ParallelScavengeGC時無效---FullGCparallel-JDK5.0以上,JVM會根據(jù)系統(tǒng)配置-此值最好配置與處樣適用于-JAVA6出現(xiàn)的參數(shù)--和相應(yīng)Survivor區(qū)--FullGC前調(diào)DoyounggenerationGCpriortoafullGC.(IntroducedinCMS-用-Xmn設(shè)置.???-(大量的CPU/內(nèi)存,(在1.4.14CPU的- 行效率降低.此值設(shè)置運行多少次GC以后對-GC的時候,對年CMS是不會移動內(nèi)存的,因此,這個非常容易產(chǎn)生碎片,導(dǎo)致內(nèi)存不夠用,因此,內(nèi)存的壓縮這個時候就會被啟用。增加這個-CMS收hostspot自行觸發(fā)CMSGC-cms70%CMSpromotionfailed(見下面介CMSInitiatingOccupancyFraction計-比率時發(fā)---輸出形式[GC118250K- [Full 輸出形式:[GC[DefNew:8614K->781K(9088K0. [GC --可與-XX:+PrintGC-XX:+Printetails混合使用輸出形式:11.851:[GC -輸出形式:Totaltimeforwhichapplicationthreadswerestopped: -輸出形式:Application --使-collectsbeforeprintingthe-TLAB空間查看每次minorGC后新的存活Desiredsurvivorbytes,newthreshold7(max15)newthreshold7即標(biāo)識新的存活周期的7對于GC2throughput(gc時間比)和暫停pause(gc發(fā)生時app對外顯示的無法響應(yīng)。Total默認(rèn)情況下,vm會增加/減少heap大小以維持 space在整個vm中占的比例,這個比例由MinHeap Ratio和MaxHeap Ratio指定。一般而言,server端的app對vm分配盡可能多的memory;將XmsXmx設(shè)為一樣的值。如果虛擬機(jī)啟動時設(shè)置使用的內(nèi)存比較小,這個時候又需要初TheYoung另外一個對于app流暢性運行影響的因素是younggeneration的大小。younggeneration越大,minorcollection越少;但是在固定heapsizeyounggenerationtenuredgeneration,就意味著的majorcollection(majorcollection會minorcollection)。NewRatioyoung和tenuredgenerationNewSize和MaxNewSize是younggeneration大小的下限和上限,將這兩個值設(shè)為一樣就固定了younggeneration的大?。╔msXmx設(shè)為一樣如果希望,SurvivorRatio也可以優(yōu)化survivorSurvivorRatioeden和survior一般而言,server端的appvm的最大的heapsizeyounggeneration如果heapsizeyounggeneration的大小意味著減小tenuredgenerationtenuredgeneration在任何時候夠大,能夠容納所有l(wèi)ive的data(留10%-20%的空余。1、年輕代大小選響應(yīng)時間優(yōu)先的應(yīng)用:盡可能設(shè)大,直到接近系統(tǒng)的最低響應(yīng)時間限制(根據(jù)實際情況選擇).在此種情況下,年輕代收集發(fā)生的頻率也是最小的.同時,減少到達(dá)年老代的對象.吞吐量優(yōu)先的應(yīng)用:盡可能的設(shè)置大,可能到達(dá)Gbit的程度.因為對響應(yīng)時間沒有要求,收集可以并行進(jìn)行,一般適合8CPU以上的應(yīng)用.避免設(shè)置過小.當(dāng)設(shè)置過小時會導(dǎo)致:1.YGC次數(shù)更加頻繁2.可能導(dǎo)致YGC對象直接進(jìn)入舊生代,如果此時舊生代滿了,會觸發(fā)FGC.2、年老代大小選響應(yīng)時間優(yōu)先的應(yīng)用:年老代使用并發(fā)收集器,所以其大小需要設(shè)置,一般要考慮并發(fā)會話率和會話持續(xù)時間等一些參數(shù).如果堆設(shè)置小了,可以會造成內(nèi)存碎片,高回收頻率以及應(yīng)用并發(fā)收集信息、持久代并發(fā)收集次數(shù)、傳統(tǒng)GC3、較小堆引起的碎片問因為年老代的并發(fā)收集器使用標(biāo)記,清除算法,所以不會對堆進(jìn)行壓縮.當(dāng)收集器回收時,他會把相鄰的空間進(jìn)行合并,這樣可以分配給較大的對象.但是,當(dāng)堆空間較小時,運行一段時間以后,就會出現(xiàn)"碎片",如果并發(fā)收集器找不到足夠的空間,那么并發(fā)收集器將會停止,然后使用傳統(tǒng)的 paction=0FullGC4、用64位操作系統(tǒng),Linux下64位的jdk比32位jdk要慢一些,但是吃得內(nèi)存,吞5、XMX和XMS設(shè)置一樣大,MaxPermSizeMinPermSize設(shè)置一樣大,這樣可以減輕伸6、使用CMS的好處是用盡量少的,經(jīng)驗值是128M-256M,然后老生代利用CMScms2G內(nèi)存,大約20-80ms的應(yīng)用程序停頓時間7、系統(tǒng)停頓的時候可能是GC的問題也可能是程序的問題,多用jmap和jstack查看,或者killall3javajavablog中介紹)8、

溫馨提示

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

評論

0/150

提交評論