成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java虛擬機HotSpot垃圾收集器是什么

這篇文章主要講解了“Java虛擬機HotSpot垃圾收集器是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java虛擬機HotSpot垃圾收集器是什么”吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),冷水江企業(yè)網(wǎng)站建設(shè),冷水江品牌網(wǎng)站建設(shè),網(wǎng)站定制,冷水江網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,冷水江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

HotSpot 虛擬機提供了多種垃圾收集器,每種收集器都有各自的特點,雖然我們要對各個收集器進行比較,但并非為了挑選出一個最好的收集器。我們選擇的只是對具體應(yīng)用最合適的收集器。

新生代垃圾收集器

Serial 垃圾收集器(單線程)

只開啟一條 GC 線程進行垃圾回收,并且在垃圾收集過程中停止一切用戶線程(Stop The World)。

一般客戶端應(yīng)用所需內(nèi)存較小,不會創(chuàng)建太多對象,而且堆內(nèi)存不大,因此垃圾收集器回收時間短,即使在這段時間停止一切用戶線程,也不會感覺明顯卡頓。因此 Serial 垃圾收集器適合客戶端使用。

由于 Serial 收集器只使用一條 GC 線程,避免了線程切換的開銷,從而簡單高效。 

Java虛擬機HotSpot垃圾收集器是什么  

ParNew 垃圾收集器(多線程)

ParNew 是 Serial 的多線程版本。由多條 GC 線程并行地進行垃圾清理。但清理過程依然需要 Stop The World。

ParNew 追求“低停頓時間”,與 Serial 唯一區(qū)別就是使用了多線程進行垃圾收集,在多 CPU 環(huán)境下性能比 Serial 會有一定程度的提升;但線程切換需要額外的開銷,因此在單 CPU 環(huán)境中表現(xiàn)不如 Serial。

Java虛擬機HotSpot垃圾收集器是什么  

Parallel Scavenge 垃圾收集器(多線程)

Parallel Scavenge 和 ParNew 一樣,都是多線程、新生代垃圾收集器。但是兩者有巨大的不同點:

  1. Parallel Scavenge:追求 CPU 吞吐量,能夠在較短時間內(nèi)完成指定任務(wù),因此適合沒有交互的后臺計算。

  2. ParNew:追求降低用戶停頓時間,適合交互式應(yīng)用。

吞吐量 = 運行用戶代碼時間 / (運行用戶代碼時間 + 垃圾收集時間)

追求高吞吐量,可以通過減少 GC 執(zhí)行實際工作的時間,然而,僅僅偶爾運行 GC 意味著每當 GC 運行時將有許多工作要做,因為在此期間積累在堆中的對象數(shù)量很高。單個 GC 需要花更多的時間來完成,從而導致更高的暫停時間。而考慮到低暫停時間,最好頻繁運行 GC 以便更快速完成,反過來又導致吞吐量下降。

  1. 通過參數(shù) -XX:GCTimeRadio 設(shè)置垃圾回收時間占總 CPU 時間的百分比。

  2. 通過參數(shù) -XX:MaxGCPauseMillis 設(shè)置垃圾處理過程最久停頓時間。

  3. 通過命令 -XX:+UseAdaptiveSizePolicy 開啟自適應(yīng)策略。我們只要設(shè)置好堆的大小和 MaxGCPauseMillis 或 GCTimeRadio,收集器會自動調(diào)整新生代的大小、Eden 和 Survivor 的比例、對象進入老年代的年齡,以最大程度上接近我們設(shè)置的 MaxGCPauseMillis 或 GCTimeRadio。

老年代垃圾收集器

Serial Old 垃圾收集器(單線程)

Serial Old 收集器是 Serial 的老年代版本,都是單線程收集器,只啟用一條 GC 線程,都適合客戶端應(yīng)用。它們唯一的區(qū)別就是:Serial Old 工作在老年代,使用“標記-整理”算法;Serial 工作在新生代,使用“復制”算法。

Parallel Old 垃圾收集器(多線程)

Parallel Old 收集器是 Parallel Scavenge 的老年代版本,追求 CPU 吞吐量。

CMS 垃圾收集器

CMS(Concurrent Mark Sweep,并發(fā)標記清除)收集器是以獲取最短回收停頓時間為目標的收集器(追求低停頓),它在垃圾收集時使得用戶線程和 GC 線程并發(fā)執(zhí)行,因此在垃圾收集過程中用戶也不會感到明顯的卡頓。

  • 初始標記:Stop The World,僅使用一條初始標記線程對所有與 GC Roots 直接關(guān)聯(lián)的對象進行標記。

  • 并發(fā)標記:使用多條標記線程,與用戶線程并發(fā)執(zhí)行。此過程進行可達性分析,標記出所有廢棄對象。速度很慢。

  • 重新標記:Stop The World,使用多條標記線程并發(fā)執(zhí)行,將剛才并發(fā)標記過程中新出現(xiàn)的廢棄對象標記出來。

  • 并發(fā)清除:只使用一條 GC 線程,與用戶線程并發(fā)執(zhí)行,清除剛才標記的對象。這個過程非常耗時。

并發(fā)標記與并發(fā)清除過程耗時最長,且可以與用戶線程一起工作,因此,總體上說,CMS 收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)執(zhí)行的。

Java虛擬機HotSpot垃圾收集器是什么  

CMS 的缺點:

  1. 吞吐量低

  2. 無法處理浮動垃圾,導致頻繁 Full GC

  3. 使用“標記-清除”算法產(chǎn)生碎片空間

對于產(chǎn)生碎片空間的問題,可以通過開啟 -XX:+UseCMSCompactAtFullCollection,在每次 Full GC 完成后都會進行一次內(nèi)存壓縮整理,將零散在各處的對象整理到一塊。設(shè)置參數(shù) -XX:CMSFullGCsBeforeCompaction告訴 CMS,經(jīng)過了 N 次 Full GC 之后再進行一次內(nèi)存整理。

G1 通用垃圾收集器

G1 是一款面向服務(wù)端應(yīng)用的垃圾收集器,它沒有新生代和老年代的概念,而是將堆劃分為一塊塊獨立的 Region。當要進行垃圾收集時,首先估計每個 Region 中垃圾的數(shù)量,每次都從垃圾回收價值最大的 Region 開始回收,因此可以獲得最大的回收效率。

從整體上看, G1 是基于“標記-整理”算法實現(xiàn)的收集器,從局部(兩個 Region 之間)上看是基于“復制”算法實現(xiàn)的,這意味著運行期間不會產(chǎn)生內(nèi)存空間碎片。

這里拋個問題????

一個對象和它內(nèi)部所引用的對象可能不在同一個 Region 中,那么當垃圾回收時,是否需要掃描整個堆內(nèi)存才能完整地進行一次可達性分析?

并不!每個 Region 都有一個 Remembered Set,用于記錄本區(qū)域中所有對象引用的對象所在的區(qū)域,進行可達性分析時,只要在 GC Roots 中再加上 Remembered Set 即可防止對整個堆內(nèi)存進行遍歷。

如果不計算維護 Remembered Set 的操作,G1 收集器的工作過程分為以下幾個步驟:

  • 初始標記:Stop The World,僅使用一條初始標記線程對所有與 GC Roots 直接關(guān)聯(lián)的對象進行標記。

  • 并發(fā)標記:使用一條標記線程與用戶線程并發(fā)執(zhí)行。此過程進行可達性分析,速度很慢。

  • 最終標記:Stop The World,使用多條標記線程并發(fā)執(zhí)行。

  • 篩選回收:回收廢棄對象,此時也要 Stop The World,并使用多條篩選回收線程并發(fā)執(zhí)行。

感謝各位的閱讀,以上就是“Java虛擬機HotSpot垃圾收集器是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Java虛擬機HotSpot垃圾收集器是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站名稱:Java虛擬機HotSpot垃圾收集器是什么
分享地址:http://jinyejixie.com/article6/psgdog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站收錄商城網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站維護品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
大埔区| 长汀县| 广河县| 中超| 民乐县| 湘乡市| 永平县| 平原县| 鲁甸县| 航空| 太谷县| 罗江县| 阳泉市| 锡林浩特市| 钦州市| 从江县| 吴堡县| 会泽县| 大新县| 柳江县| 南川市| 始兴县| 长海县| 湟源县| 舞阳县| 阿坝| 宜宾县| 涡阳县| 资阳市| 汪清县| 晋宁县| 锡林郭勒盟| 苗栗县| 佛山市| 库尔勒市| 西平县| 当阳市| 雷山县| 迁西县| 蒙城县| 西丰县|