91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中有幾種垃圾收集器

發布時間:2021-08-25 18:48:59 來源:億速云 閱讀:152 作者:chen 欄目:編程語言

這篇文章主要講解了“Java中有幾種垃圾收集器”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中有幾種垃圾收集器”吧!

  垃圾收集器就是垃圾收集算法的具體實現。它們分別是新生代的:Serial、ParNew、ParallelScavenge老年代的:SerialOld、ParallelOld、CMS以及適用于新生代和老年代的G1。算上jdk11的ZGC目前一共是八種垃圾收集器。

Serial收集器

  Serial是最早的垃圾收集器,這是一個單線程收集器,它只適用一個CPU或者是一條收集線去執行回收任務。

ParNew收集器

  ParNew是一個新生代的多線程的收集器,它相當于是Serial的多線程版本。它的一些參數配置和Serial基本完全相同。只不過ParNew收集器在工作的時候,是多個線程工作的

  ParNew適合在多個CPU場景下使用,而我們的線上服務器基本都是多核CPU,所以,使用新生代的ParNew搭配老年代的CMS收集器還是挺常見的,我所在的部門的系統線上就是使用的ParNew+CMS組合。與Serial相同的是,ParNew在進行垃圾回收的時候,也會暫停所用的用戶線程。

ParallelScavenge收集器

  ParallelScavenge也是一個新生代收集器,并且也是一個多線程收集器,ParallelScavenge關注的點是應用的吞吐量,吞吐量=用戶代碼運行時間/用戶運行代碼時間+GC時間,它提供了兩個參數用來控制吞吐量,分別是控制最大垃圾收集停頓時間的-XX:MaxGCPauseMillis參數和直接設置吞吐量大小的-XX:GCTimeRatio參數。GCTimeRatio參數的值是一個大于0且小于100的整數,也就是垃圾收集時間占總時間的比率,相當于是吞吐量的倒數。高吞吐量可以高效的利用CPU時間,盡快完成計算任務,因此,ParallelScavenge收集器也用于需要密集計算不需要進行用戶交互的一些后臺。

SerivalOld收集器

  SerivalOld收集器是垃圾收集的老年代版本,也是一個單線程收集器。

ParallelOld收集器

  ParallelOld收集器是ParallelScavenge的老年代版本。可以使用ParallelScavenge+ParallelOld組合,在注重吞吐量和CPU資源敏感的場合可以優先考慮ParallellSCavenge和ParallellOld組合。

CMS(ConcurrentMarkSweep)收集器

  CMS(ConcurrentMarkSweep),并發標記清除,這是一種追求低停頓時間為的收集器。互聯網時代,用戶體驗為王,垃圾收集的時間越短,給用戶帶來的體驗就越好。CMS收集器整個回收過程可以分為四個步驟:

  初始標記(CMSinintmark)

  并發標記(CMSconcurrentmark)

  重新標記(CMSremarkmark)

  并發清除(CMSconcurrentsweep)

G1(GarBage-First)收集器

  G1收集器是一款面向服務端的收集器,也就是說,它將低停頓時間作為終極目標。G1與其他垃圾收集器的區別是它可以控制垃圾收集時間在某一個范圍之內。與CMS垃圾收集的運行過程類似,它分為初始標記,并發標記,最終標記,篩選回收。G1之所以能夠將停頓時間控制在一個指定的時間內,就是因為它可以選擇性的進行回收。

  G1嘗試著去滿足最小的停頓時間,在G1中,停頓時間是可以設置的,是可控制的,之所以可以建立可預測的停頓時間模型,是因為G1避免了在java堆中進行全區域的垃圾收集。傳統的新生代老年代的內存模型被多個大小相等的獨立區域(Region)所取代。如下圖所示,雖然新生代和老年代的概念還保留著,但是他們不再是物理隔離的了,他們都是由Region所組成。G1在清除階段是有選擇性的,它會根據設置的停頓時間,選擇回報率最大的Region。Region可以說是G1回收器一次回收的最小單元。即每一次回收都是回收N個Region。這個N是多少,主要受到G1回收的效率和用戶設置的軟實時目標有關。

ZGC

  Z垃圾收集器(ZGC)是可伸縮的低延遲垃圾收集器。ZGC可以同時執行所有昂貴的工作,而不會將應用程序線程的執行停止超過10ms,這使得它適合于要求低延遲和/或使用非常大的堆(數TB)的應用程序。

  目前ZGC沒有分代,每次GC都會標記整個堆,將堆分為2M(small),32M(medium),n*2M(large)三種大小的頁面(Page)來管理,根據對象的大小來判斷在哪種頁面分配,大部分對象標記和對象轉移都是可以和應用線程并發。

感謝各位的閱讀,以上就是“Java中有幾種垃圾收集器”的內容了,經過本文的學習后,相信大家對Java中有幾種垃圾收集器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵定县| 泗水县| 图木舒克市| 子长县| 通州市| 平江县| 松江区| 涞源县| 聂荣县| 濮阳县| 庆城县| 响水县| 泾源县| 绍兴市| 炎陵县| 额济纳旗| 永新县| 巧家县| 石泉县| 昌吉市| 临汾市| 扬中市| 海林市| 兖州市| 东方市| 伊川县| 咸丰县| 淮阳县| 和林格尔县| 汉川市| 阿尔山市| 太仆寺旗| 宜兰市| 渝中区| 慈溪市| 普兰县| 山东省| 丹棱县| 襄汾县| 铅山县| 平远县|