青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

JVM詳解之Java垃圾回收機(jī)制詳解和調(diào)優(yōu) (轉(zhuǎn))

1.JVM的gc概述

  gc即垃圾收集機(jī)制是指jvm用于釋放那些不再使用的對象所占用的內(nèi)存。java語言并不要求jvm有g(shù)c,也沒有規(guī)定gc如何工作。不過常用的jvm都有g(shù)c,而且大多數(shù)gc都使用類似的算法管理內(nèi)存和執(zhí)行收集操作。

  在充分理解了垃圾收集算法和執(zhí)行過程后,才能有效的優(yōu)化它的性能。有些垃圾收集專用于特殊的應(yīng)用程序。比如,實(shí)時(shí)應(yīng)用程序主要是為了避免垃圾收集中斷,而大多數(shù)OLTP應(yīng)用程序則注重整體效率。理解了應(yīng)用程序的工作負(fù)荷和jvm支持的垃圾收集算法,便可以進(jìn)行優(yōu)化配置垃圾收集器。

  垃圾收集的目的在于清除不再使用的對象。gc通過確定對象是否被活動對象引用來確定是否收集該對象。gc首先要判斷該對象是否是時(shí)候可以收集。兩種常用的方法是引用計(jì)數(shù)和對象引用遍歷。

  1.1.引用計(jì)數(shù)

  引用計(jì)數(shù)存儲對特定對象的所有引用數(shù),也就是說,當(dāng)應(yīng)用程序創(chuàng)建引用以及引用超出范圍時(shí),jvm必須適當(dāng)增減引用數(shù)。當(dāng)某對象的引用數(shù)為0時(shí),便可以進(jìn)行垃圾收集。

  1.2.對象引用遍歷

  早期的jvm使用引用計(jì)數(shù),現(xiàn)在大多數(shù)jvm采用對象引用遍歷。對象引用遍歷從一組對象開始,沿著整個(gè)對象圖上的每條鏈接,遞歸確定可到達(dá)(reachable)的對象。如果某對象不能從這些根對象的一個(gè)(至少一個(gè))到達(dá),則將它作為垃圾收集。在對象遍歷階段,gc必須記住哪些對象可以到達(dá),以便刪除不可到達(dá)的對象,這稱為標(biāo)記(marking)對象。

  下一步,gc要刪除不可到達(dá)的對象。刪除時(shí),有些gc只是簡單的掃描堆棧,刪除未標(biāo)記的未標(biāo)記的對象,并釋放它們的內(nèi)存以生成新的對象,這叫做清除(sweeping)。這種方法的問題在于內(nèi)存會分成好多小段,而它們不足以用于新的對象,但是組合起來卻很大。因此,許多gc可以重新組織內(nèi)存中的對象,并進(jìn)行壓縮(compact),形成可利用的空間。

  為此,gc需要停止其他的活動活動。這種方法意味著所有與應(yīng)用程序相關(guān)的工作停止,只有g(shù)c運(yùn)行。結(jié)果,在響應(yīng)期間增減了許多混雜請求。另外,更復(fù)雜的 gc不斷增加或同時(shí)運(yùn)行以減少或者清除應(yīng)用程序的中斷。有的gc使用單線程完成這項(xiàng)工作,有的則采用多線程以增加效率。

2.幾種垃圾回收機(jī)制

  2.1.標(biāo)記-清除收集器

  這種收集器首先遍歷對象圖并標(biāo)記可到達(dá)的對象,然后掃描堆棧以尋找未標(biāo)記對象并釋放它們的內(nèi)存。這種收集器一般使用單線程工作并停止其他操作。

  2.2.標(biāo)記-壓縮收集器

  有時(shí)也叫標(biāo)記-清除-壓縮收集器,與標(biāo)記-清除收集器有相同的標(biāo)記階段。在第二階段,則把標(biāo)記對象復(fù)制到堆棧的新域中以便壓縮堆棧。這種收集器也停止其他操作。

  2.3.復(fù)制收集器

  這種收集器將堆棧分為兩個(gè)域,常稱為半空間。每次僅使用一半的空間,jvm生成的新對象則放在另一半空間中。gc運(yùn)行時(shí),它把可到達(dá)對象復(fù)制到另一半空間,從而壓縮了堆棧。這種方法適用于短生存期的對象,持續(xù)復(fù)制長生存期的對象則導(dǎo)致效率降低。

  2.4.增量收集器

  增量收集器把堆棧分為多個(gè)域,每次僅從一個(gè)域收集垃圾。這會造成較小的應(yīng)用程序中斷。

  2.5.分代收集器

  這種收集器把堆棧分為兩個(gè)或多個(gè)域,用以存放不同壽命的對象。jvm生成的新對象一般放在其中的某個(gè)域中。過一段時(shí)間,繼續(xù)存在的對象將獲得使用期并轉(zhuǎn)入更長壽命的域中。分代收集器對不同的域使用不同的算法以優(yōu)化性能。

  2.6.并發(fā)收集器

  并發(fā)收集器與應(yīng)用程序同時(shí)運(yùn)行。這些收集器在某點(diǎn)上(比如壓縮時(shí))一般都不得不停止其他操作以完成特定的任務(wù),但是因?yàn)槠渌麘?yīng)用程序可進(jìn)行其他的后臺操作,所以中斷其他處理的實(shí)際時(shí)間大大降低。

  2.7.并行收集器

  并行收集器使用某種傳統(tǒng)的算法并使用多線程并行的執(zhí)行它們的工作。在多cpu機(jī)器上使用多線程技術(shù)可以顯著的提高java應(yīng)用程序的可擴(kuò)展性。



3.Sun HotSpot

  1.4.1 JVM堆大小的調(diào)整

  Sun HotSpot 1.4.1使用分代收集器,它把堆分為三個(gè)主要的域:新域、舊域以及永久域。Jvm生成的所有新對象放在新域中。一旦對象經(jīng)歷了一定數(shù)量的垃圾收集循環(huán)后,便獲得使用期并進(jìn)入舊域。在永久域中jvm則存儲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會調(diào)整永久域的大小以滿足需要。每次調(diào)整時(shí),jvm會對堆進(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救助空間互換角色。維持活動的對象將在救助空間不斷復(fù)制,直到它們獲得使用期并轉(zhuǎn)入舊域。使用-XX:SurvivorRatio 可控制新域子空間的大小。

  同NewRation一樣,SurvivorRation規(guī)定某救助域與Eden空間的比值。比如,以下命令把新域設(shè)置成64m,Eden占32m,每個(gè)救助域各占16m:

java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2

  如前所述,默認(rèn)狀態(tài)下HotSpot對新域使用復(fù)制收集器,對舊域使用標(biāo)記-清除-壓縮收集器。在新域中使用復(fù)制收集器有很多意義,因?yàn)閼?yīng)用程序生成的大部分對象是短壽命的。理想狀態(tài)下,所有過渡對象在移出Eden空間時(shí)將被收集。如果能夠這樣的話,并且移出Eden空間的對象是長壽命的,那么理論上可以立即把它們移進(jìn)舊域,避免在救助空間反復(fù)復(fù)制。但是,應(yīng)用程序不能適合這種理想狀態(tài),因?yàn)樗鼈冇幸恍〔糠种虚L壽命的對象。最好是保持這些中長壽命的對象并放在新域中,因?yàn)閺?fù)制小部分的對象總比壓縮舊域廉價(jià)。為控制新域中對象的復(fù)制,可用-XX:TargetSurvivorRatio控制救助空間的比例(該值是設(shè)置救助空間的使用比例。如救助空間位1M,該值50表示可用500K)。該值是一個(gè)百分比,默認(rèn)值是50。當(dāng)較大的堆棧使用較低的 sruvivorratio時(shí),應(yīng)增加該值到80至90,以更好利用救助空間。用-XX:maxtenuring threshold可控制上限。

  為放置所有的復(fù)制全部發(fā)生以及希望對象從eden擴(kuò)展到舊域,可以把MaxTenuring Threshold設(shè)置成0。設(shè)置完成后,實(shí)際上就不再使用救助空間了,因此應(yīng)把SurvivorRatio設(shè)成最大值以最大化Eden空間,設(shè)置如下:

java … -XX:MaxTenuringThreshold=0 –XX:SurvivorRatio=50000 …

4.BEA JRockit JVM的使用

  Bea WebLogic 8.1使用的新的JVM用于Intel平臺。在Bea安裝完畢的目錄下可以看到有一個(gè)類似于jrockit81sp1_141_03的文件夾。這就是 Bea新JVM所在目錄。不同于HotSpot把Java字節(jié)碼編譯成本地碼,它預(yù)先編譯成類。JRockit還提供了更細(xì)致的功能用以觀察JVM的運(yùn)行狀態(tài),主要是獨(dú)立的GUI控制臺(只能適用于使用Jrockit才能使用jrockit81sp1_141_03自帶的console監(jiān)控一些cpu及 memory參數(shù))或者WebLogic Server控制臺。

  Bea JRockit JVM支持4種垃圾收集器:

  4.1.1.分代復(fù)制收集器

  它與默認(rèn)的分代收集器工作策略類似。對象在新域中分配,即JRockit文檔中的nursery。這種收集器最適合單cpu機(jī)上小型堆操作。

  4.1.2.單空間并發(fā)收集器

  該收集器使用完整堆,并與背景線程共同工作。盡管這種收集器可以消除中斷,但是收集器需花費(fèi)較長的時(shí)間尋找死對象,而且處理應(yīng)用程序時(shí)收集器經(jīng)常運(yùn)行。如果處理器不能應(yīng)付應(yīng)用程序產(chǎn)生的垃圾,它會中斷應(yīng)用程序并關(guān)閉收集。

  分代并發(fā)收集器這種收集器在護(hù)理域使用排它復(fù)制收集器,在舊域中則使用并發(fā)收集器。由于它比單空間共同發(fā)生收集器中斷頻繁,因此它需要較少的內(nèi)存,應(yīng)用程序的運(yùn)行效率也較高,注意,過小的護(hù)理域可以導(dǎo)致大量的臨時(shí)對象被擴(kuò)展到舊域中。這會造成收集器超負(fù)荷運(yùn)作,甚至采用排它性工作方式完成收集。

  4.1.3.并行收集器

  該收集器也停止其他進(jìn)程的工作,但使用多線程以加速收集進(jìn)程。盡管它比其他的收集器易于引起長時(shí)間的中斷,但一般能更好的利用內(nèi)存,程序效率也較高。

  默認(rèn)狀態(tài)下,JRockit使用分代并發(fā)收集器。要改變收集器,可使用-Xgc:,對應(yīng)四個(gè)收集器分別為 gencopy,singlecon,gencon以及parallel。可使用-Xms和-Xmx設(shè)置堆的初始大小和最大值。要設(shè)置護(hù)理域,則使用- Xns:java –jrockit –Xms512m –Xmx512m –Xgc:gencon –Xns128m…盡管JRockit支持-verbose:gc開關(guān),但它輸出的信息會因收集器的不同而異。JRockit還支持memory、 load和codegen的輸出。

  注意 :如果 使用JRockit JVM的話還可以使用WLS自帶的console(C:\bea\jrockit81sp1_141_03\bin下)來監(jiān)控一些數(shù)據(jù),如cpu, memery等。要想能構(gòu)監(jiān)控必須在啟動服務(wù)時(shí)startWeblogic.cmd中加入-Xmanagement參數(shù)。


5.如何從JVM中獲取信息來進(jìn)行調(diào)整

  -verbose.gc開關(guān)可顯示gc的操作內(nèi)容。打開它,可以顯示最忙和最空閑收集行為發(fā)生的時(shí)間、收集前后的內(nèi)存大小、收集需要的時(shí)間等。打開- xx:+ printgcdetails開關(guān),可以詳細(xì)了解gc中的變化。打開-XX: + PrintGCTimeStamps開關(guān),可以了解這些垃圾收集發(fā)生的時(shí)間,自jvm啟動以后以秒計(jì)量。最后,通過-xx: + PrintHeapAtGC開關(guān)了解堆的更詳細(xì)的信息。為了了解新域的情況,可以通過-XX:=PrintTenuringDistribution開關(guān)了解獲得使用期的對象權(quán)。

6.Pdm系統(tǒng)JVM調(diào)整

  6.1.服務(wù)器:前提內(nèi)存1G 單CPU

  可通過如下參數(shù)進(jìn)行調(diào)整:-server 啟用服務(wù)器模式(如果CPU多,服務(wù)器機(jī)建議使用此項(xiàng))

  -Xms,-Xmx一般設(shè)為同樣大小。 800m

  -Xmn 是將NewSize與MaxNewSize設(shè)為一致。320m

  -XX:PerSize 64m

  -XX:NewSize 320m 此值設(shè)大可調(diào)大新對象區(qū),減少Full GC次數(shù)

  -XX:MaxNewSize 320m

  -XX:NewRato NewSize設(shè)了可不設(shè)。

  -XX: SurvivorRatio

  -XX:userParNewGC 可用來設(shè)置并行收集

  -XX:ParallelGCThreads 可用來增加并行度

  -XXUseParallelGC 設(shè)置后可以使用并行清除收集器

  -XX:UseAdaptiveSizePolicy 與上面一個(gè)聯(lián)合使用效果更好,利用它可以自動優(yōu)化新域大小以及救助空間比值

  6.2.客戶機(jī):通過在JNLP文件中設(shè)置參數(shù)來調(diào)整客戶端JVM

  JNLP中參數(shù):initial-heap-size和max-heap-size

  這可以在framework的RequestManager中生成JNLP文件時(shí)加入上述參數(shù),但是這些值是要求根據(jù)客戶機(jī)的硬件狀態(tài)變化的(如客戶機(jī)的內(nèi)存大小等)。建議這兩個(gè)參數(shù)值設(shè)為客戶機(jī)可用內(nèi)存的60%(有待測試)。為了在動態(tài)生成JNLP時(shí)以上兩個(gè)參數(shù)值能夠隨客戶機(jī)不同而不同,可靠慮獲得客戶機(jī)系統(tǒng)信息并將這些嵌到首頁index.jsp中作為連接請求的參數(shù)。

  在設(shè)置了上述參數(shù)后可以通過Visualgc 來觀察垃圾回收的一些參數(shù)狀態(tài),再做相應(yīng)的調(diào)整來改善性能。一般的標(biāo)準(zhǔn)是減少fullgc的次數(shù),最好硬件支持使用并行垃圾回收(要求多CPU)。

posted on 2012-04-01 18:36 coreBugZJ 閱讀(451) 評論(0)  編輯 收藏 引用 所屬分類: 技術(shù)視野ProgrammingLanguage

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品va在看黑人| 嫩草伊人久久精品少妇av杨幂| 久色成人在线| 久久精品久久99精品久久| 国产一区二区三区免费观看| 久久精品在线| 久久久在线视频| 99精品免费视频| 亚洲视频久久| 红桃视频欧美| 亚洲日本aⅴ片在线观看香蕉| 欧美精品免费观看二区| 亚洲尤物视频在线| 小黄鸭精品密入口导航| 亚洲国产日韩在线| 宅男66日本亚洲欧美视频| 国产视频欧美视频| 亚洲国产一区二区a毛片| 国产精品多人| 老牛国产精品一区的观看方式| 欧美成人激情视频| 午夜精品久久久久久久99水蜜桃 | 亚洲另类黄色| 国产欧美日韩视频在线观看 | 蜜臀久久99精品久久久画质超高清| 久久综合久久综合久久综合| 一区二区三区高清不卡| 亚洲欧美日韩另类精品一区二区三区| 黑人巨大精品欧美黑白配亚洲| 亚洲福利视频三区| 国产欧美丝祙| 亚洲毛片在线观看.| 激情综合色丁香一区二区| 99国产精品| 亚洲第一精品久久忘忧草社区| 日韩特黄影片| 亚洲国产精品va在线观看黑人| 亚洲香蕉成视频在线观看| 亚洲精品日韩久久| 久久国产一区二区三区| 亚洲免费视频网站| 美日韩精品免费观看视频| 欧美综合国产精品久久丁香| 欧美日韩一区二区三区| 欧美黄色日本| 亚洲第一精品影视| 欧美一区二区三区在线看| aⅴ色国产欧美| 久久久综合激的五月天| 久久久精品动漫| 国产精品视频免费在线观看| 亚洲精品少妇| 亚洲美女一区| 欧美大学生性色视频| 男男成人高潮片免费网站| 国产一区视频在线看| 校园激情久久| 久久精品人人做人人爽| 国产精品每日更新在线播放网址| 亚洲激情综合| 亚洲人成在线播放| 女女同性女同一区二区三区91| 美女福利精品视频| 在线精品高清中文字幕| 久久久久久久久岛国免费| 久久人人97超碰精品888| 国产一区二区三区四区| 久久国产精品72免费观看| 久久亚洲综合色| 激情五月***国产精品| 久久久人成影片一区二区三区| 久热精品视频| 91久久久久久久久久久久久| 美女诱惑一区| 99re66热这里只有精品3直播| 在线亚洲+欧美+日本专区| 国产精品草草| 欧美在线不卡视频| 玖玖视频精品| 日韩视频永久免费观看| 欧美日韩一区三区四区| 亚洲免费视频观看| 久久视频在线免费观看| 亚洲高清免费| 欧美日韩少妇| 性高湖久久久久久久久| 欧美国产一区二区三区激情无套| 亚洲久色影视| 国产精品亚洲美女av网站| 久久精品30| 亚洲日本在线观看| 欧美一区二区三区在线| 黄色成人av网| 欧美日韩在线播放三区四区| 午夜精品久久| 亚洲国产美女久久久久| 亚洲欧美另类在线观看| 韩国在线视频一区| 欧美日韩久久不卡| 欧美一区永久视频免费观看| 欧美激情偷拍| 久久精彩视频| 日韩午夜电影av| 国产日本欧美一区二区三区在线| 美女视频一区免费观看| 亚洲网站在线| 亚洲国产一区视频| 久久xxxx| 亚洲视频一区在线观看| 极品尤物久久久av免费看| 国产精品扒开腿做爽爽爽软件| 久久精品亚洲热| 亚洲一区三区视频在线观看| 亚洲电影激情视频网站| 久久久91精品国产| 在线视频精品| 亚洲精品国产精品国自产观看浪潮| 国产精品三级视频| 欧美日韩国产成人在线免费 | 亚洲图色在线| 亚洲国产日韩欧美一区二区三区| 久久精品国产99国产精品澳门| 亚洲作爱视频| 亚洲欧洲美洲综合色网| 国内成人在线| 国产一区二区三区免费在线观看| 国产精品99一区| 欧美精品一卡二卡| 嫩草伊人久久精品少妇av杨幂| 欧美在线一级视频| 欧美一区成人| 欧美一区二区免费| 亚洲自拍另类| 亚洲一品av免费观看| 一本不卡影院| 99国产精品久久| 亚洲美女中文字幕| 亚洲美女在线国产| 亚洲精品久久在线| 亚洲精品在线三区| 亚洲国产乱码最新视频| 亚洲国产精品久久人人爱蜜臀| 久久亚洲美女| 蜜桃久久精品乱码一区二区| 葵司免费一区二区三区四区五区| 久久久人成影片一区二区三区 | 亚洲女女女同性video| 中国日韩欧美久久久久久久久| 在线视频精品一区| 亚洲性感美女99在线| 午夜精品久久久久久久99热浪潮| 午夜精品一区二区在线观看| 午夜欧美大片免费观看| 欧美一区二区三区视频在线| 久久成人国产| 麻豆av一区二区三区| 欧美成人一二三| 亚洲精品久久久久中文字幕欢迎你| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品资源美女情侣酒店| 在线一区二区视频| 亚洲影视中文字幕| 久久久久国产成人精品亚洲午夜| 久久一区二区三区av| 欧美精品在线免费播放| 国产精品xxxav免费视频| 国产一区成人| 亚洲精品一区在线观看| 亚洲欧美另类国产| 久久尤物电影视频在线观看| 亚洲国产小视频在线观看| 9色精品在线| 久久久久久穴| 欧美日韩视频在线| 国内精品免费午夜毛片| 亚洲另类一区二区| 欧美专区亚洲专区| 亚洲国产精品成人va在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 中文亚洲字幕| 久久视频一区二区| 亚洲毛片av在线| 久久国产精品久久久| 欧美日韩99| 在线播放中文字幕一区| 正在播放亚洲一区| 久久久午夜电影| 中文亚洲视频在线| 欧美α欧美αv大片| 国产欧美精品一区| 亚洲最新色图| 蜜臀a∨国产成人精品| 国产精品99久久久久久久vr | 在线视频欧美一区| 免费在线欧美视频| 国内精品久久久| 午夜久久久久| 日韩午夜在线播放| 男女激情久久| 在线观看日韩专区|