jvm的垃圾回收機制詳解和調優_第1頁
jvm的垃圾回收機制詳解和調優_第2頁
jvm的垃圾回收機制詳解和調優_第3頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JVM 的回收機制詳解和調優gc 即收集機制是指jvm 用于那些不再使用的對象所占用的內存。java語言并不要求jvm 有gc,也沒有規定gc 如何工作。不過常用的 jvm 都有 gc,而且大多數gc 都使用類似的算法管理內存和執行收集操作。1.JVM 的gc 概述gc 即收集機制是指jvm 用于那些不再使用的對象所占用的內存。java 語言并不要求jvm 有gc,也沒有規定gc 如何工作。不過常用的jvm 都有gc,而且大多數gc 都使用類似的算法管理內存和執行收集操作。在充分理解了收集算法和執行過程后,才能有效的優化它的性能。有些收集于特殊的應用程序。比如,實時應用程序主要是為了避免收集中

2、斷,而大多數 OLTP 應用程序則注重整體效率。理解了應用程序的工作負荷和jvm 支持的收集算法,便可以進行優化配置收集器。收集的目的在于清除不再使用的對象。gc 通過確定對象是否被活動對象來確定是否收集該對象。gc 首先要判斷該對象是否是時候可以收集。兩種常用的方法是計數和對象遍歷。1.1.計數計數對特定對象的所有數,也就是說,當應用程序創建以及超出范圍時,jvm 必須適當增減數。當某對象的數為 0 時,便可以進行收集。1.2.對象遍歷早期的 PS 使用計數,現在大多數 PS 采用對象遍歷。對象遍歷從一組對象開始,沿著整個對象圖上的每條,遞歸確定可到達(XKGINGHRK)的對象。如果某對象

3、不能從這些根對象的一個(至少一個)到達,則將它作為垃圾收集。在對象遍歷階段,MI 必須記住哪些對象可以到達,以便刪除不可到達的對象,這稱為標記(SGXQOTM)對象。下一步,MI 要刪除不可到達的對象。刪除時,有些 MI 只是簡單的掃描堆棧,刪除未標記的未標記的對象,并它們的內存以生成新的對象,這叫做清除(Y)。這種方法在于內存會分成好多小段,而它們以用于新的對象,但是組合起來卻很大。因此,許多 MI 可以重新組織內存中的對象,并進行壓縮(IUSVGIZ),形成可利用的空間。為此,MI 需要停止其他的活動活動。這種方法意味著所有與應用程序相關的工作停止,只有MI 運行。結果,在響應期間增減了許

4、多混雜請求。另外,更復雜的MI 不斷增加或同時運行以減少或者清除應用程序的中斷。有的 MI 使用單線程完成這項工作,有的則采用多線程以增加效率。 幾種回收機制 標記清除收集器這種收集器首先遍歷對象圖并標記可到達的對象,然后掃描堆棧以尋找未標記對象并它們的內存。這種收集器一般使用單線程工作并停止其他操作。 標記壓縮收集器有時也叫標記清除壓縮收集器,與標記清除收集器有相同的標記階段。在第二階段,則把標記對象到堆棧的新域中以便壓縮堆棧。這種收集器也停止其他操作。 收集器這種收集器將堆棧分為兩個域,常稱為半空間。每次僅使用一半的空間,PS生成的新對象則放在另一半空間中。MI 運行時,它把可到達對象到另

5、一半空間,從而壓縮了堆棧。這種方法適用于短生存期的對象,持續長生存期的對象則導致效率降低。 增量收集器增量收集器把堆棧分為多個域,每次僅從一個域收集。這會造成較小的應用程序中斷。 分代收集器這種收集器把堆棧分為兩個或多個域,用以存放不同的對象。PS 生成的新對象一般放在其中的某個域中。過一段時間,繼續存在的對象將獲得使用期并轉入更長的域中。分代收集器對不同的域使用不同的算法以優化性能。 并發收集器并發收集器與應用程序同時運行。這些收集器在某點上(比如壓縮時)一般都不得不停止其他操作以完成特定的任務,但是因為其他應用程序可進行其他的操作,所以中斷其他處理的實際時間大大降低。 并行收集器并行收集器

6、使用某種傳統的算法并使用多線程并行的執行它們的工作。在多IV 機器上使用多線程技術可以顯著的提高 PGG 應用程序的可擴展性。 9T .UZ9VUZ 0SY 和 S堆的原始大小或最大值。下面令是把初始大小設置為 3:PGG SY SS S 為控制新域的大小,可使用 :4K8GZOU 設置新域在堆中所占的比例。下面令把整個堆設置成 S,新域比率設置成 ,即新域與舊域比例為 : ,新域為堆的 或 3:PGG SY S S S:4K8GZOU # 可使用 :4K9OK和 :3G4KYOK 設置新域的初始值和最大值。下面令把新域的初始值和最大值設置成 S:PGG SY S S S ST S域默認大小為

7、 S 運行程序時,PS 會調整域的大小以滿足需要。每次調整時,PS 會對堆進行一次完全的收集。使用 :3G6KX9OK 標志來增加域搭大小。在=KH2UMOI 9KXKX 應用程序加載較多類時,經常需要增加域的最大值。當 PS 加載類時,域中的對象急劇增加,從而使 PS 不斷調整域大小。為了避免調整,可使用 :6KX9OK 標志設置初始值。下面把域初始值設置成 S,最大值設置成 S PGG SY S S S ST S :6KXS9OK# S :3G6KXS9OK# S默認狀態下,.UZ9VUZ 在新域中使用收集器。該域一般分為三個部分。第一部分為+JKT,用于生成新的對象。另兩部分稱為救助空間

8、,當 +JKT 充滿時,收集器停止應用程序,把所有可到達對象到當前的 LXUS 救助空間,一旦當前的LXUS 救助空間充滿,收集器則把可到達對象到當前的 ZU 救助空間。,XUS 和ZU 救助空間互換角色。維持活動的對象將在救助空間不斷,直到它們獲得使用期并轉入舊域。使用 :9XOUX8GZOU 可控制新域子空間的大小。同 4K8GZOUT 一樣,9XOUX8GZOUT 規定某救助域與+JKT 空間的比值。比如,以下命令把新域設置成 S,+JKT 占 S,每個救助域各占 S:PGG SY S S S ST S :9XOUX8GZOUT # 如前所述,默認狀態下 .UZ9VUZ 對新域使用收集器

9、,對舊域使用標記清除壓縮收集器。在新域中使用收集器有很多意義,因為應用程序生成的大部分對象是短的。理想狀態下,所有過渡對象在移出 +JKT 空間時將被收集。如果能夠這樣的話,并且移出+JKT 空間的對象是長的,那么理論上可以立即把它們移進舊域,避免在救助空間反復。但是,應用程序不能適合這種理想狀態,因為它們有一小部分中長的對象。最好是保持這些中長的對象并放在新域中,因為小部分的對象總比壓縮舊域廉價。為控制新域中對象的,可用 :9XOUX8GZOU 控制救助空間的比例(該值是設置救助空間的使用比例。如救助空間位 3,該值 表示可用 1)。該值是一個百分比,默認值是 當較大的堆棧使用較低的YXOU

10、XXGZOU 時,應增加該值到 至 ,以更好利用救助空間。用 :SGZKTXOTM ZNXKYNURJ 可控制上限。為放置所有的全部發生以及希望對象從 KJKT 擴展到舊域,可以把3G:KTXOTM :NXKYNURJ 設置成 設置完成后,實際上就不再使用救助空間了,因此應把 9XOUX8GZOU 設成最大值以最大化 +JKT 空間,設置如下:PGG :3G:KTXOTM:NXKYNURJ# :9XOUX8GZOU (+ 08UIQOZ 03 的使用(KG =KH2UMOI 使用的新的 03 用于KR。在 (KG 安裝完畢的目錄下可以看到有一個類似于PXUIQOZ YV E E 的文件夾。這就

11、是(KG 新03所在目錄。不同于.UZ9VUZ 把 0GG 字節碼編譯成本地碼,它預先編譯成類。08UIQOZ 還提供了更細致的功能用以觀察 03 的運行狀態,主要是獨立的-;/控制臺(只能適用于使用0XUIQOZ 才能使用PXUIQOZ YV E E 自帶的IUTYURK一些 IV 及SKSUX_ 參數)或者=KH2UMOI 9KXKX 控制臺。(KG 08UIQOZ 0MI:MIETGSK$,對應四個收集器分別為MKTIUV_,YOTMRKIUT,MKTIUT 以及VGXGRRKR 可使用 SY 和 S 設置堆的初始大小和最大值。要設置護理域,則使用 TY:PGG PXUIQOZ SY S

12、 S S MI:MKTIUT TY S盡管 08UIQOZ 支持 KXK:MI 開關,但它輸出的信息會因收集器的不同而異。08UIQOZ 還支持SKSUX_、RUGJ 和 IUJKMKT 的輸出。注意 :如果 使用 08UIQOZ 0SGTGMKSKTZ參數。 如何從 0: 6X-):OSK9ZY 開關,可以了解這些收集發生的時間,自 PS 啟動以后以秒計量。最后,通過 : 6X.KGVZ-) 開關了解堆的更詳細的信息。為了了解新域的情況,可以通過 :#6X:KTXOTM*OYZXOHZOUT 開關了解獲得使用期的對象權。 6JS 系統 0SY,S 一般設為同樣大小。 SST 是將 4K9OK

13、 與 3G4K9OK 設為一致。 S:6KX9OK S:4K9OK S 此值設大可調大新對象區,減少,RR -) 次數:3G4K9OK S:4K8GZ9OK 設了可不設。 : 9XOUX8GZOU :YGX4K-) 可用來設置并行收集:6GXGRRKR-):NXKGJY 可用來增加并行度 ;YK6GXGRRKR-) 設置后可以使用并行清除收集器:;YKJGVZOK9OK6UROI_ 與上面一個聯合使用效果更好,利用它可以自動優化新域大小以及救助空間比值 客戶機:通過在 0426 文件中設置參數來調整客戶端 030426 中參數:OTOZOGR NKGV YOK 和SG NKGV YOK這可以在 LXGSKUXQ 的 8KWKYZ3GTGMKX 中生成 0426 文件時加入上述參數,但是這些值是要求根據客

溫馨提示

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

評論

0/150

提交評論