日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GC解释:收集器概述

發布時間:2023/12/3 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GC解释:收集器概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當前版本的HotSpot JVM包括三種類型的垃圾收集器:

–串行收集器

–并行收集器

–多數同時收集者

它們都是世代的,這意味著它們利用了堆的劃分方式 。

垃圾收集器負責三個主要操作:

–查找不再使用的對象

–釋放這些對象之后的內存

–壓縮堆

并非所有收集器都以相同的方式執行這些操作,因此讓我們了解有關所有收集器的基本信息。 我們將在單獨的文章中介紹細節。

串行收集器

顧名思義,該收集僅由一個線程執行。 在次要和完全GC期間都必須停止世界(STW)。

該收集器對年輕一代使用標記復制算法,而對老一代則使用標記清除緊湊算法進行清理。

串行GC專為單線程環境(通常是客戶端類計算機)和較小的堆而設計。 可以通過-XX:+UseSerialGC標志啟用它。

并行(吞吐量)收集器

Young集合由多個線程并行化,這使Minor GC更快。 結果,此收集器導致較短但更頻繁的Young收集STW暫停。 從JDK 7u4開始,默認情況下還會由多個線程收集“舊世代”(并且還會導致世界停頓)。 在JDK 7u4之前,需要-XX:+UseParallelOldGC標志來啟用舊一代的并行處理。 現在, -XX:+UseParallelGC和-XX:+UseParallelOldGC標志都啟用了吞吐量收集器,并同時處理了老一代和年輕一代。

該收集器還在Young Generation中使用mark-copy算法,在Old Generation中使用mark-sweep-compact,但是復制和壓縮階段均由多個線程執行。

要配置GC線程數,可以使用-XX:ParallelGCThreads=X標志。 默認值設置為CPU內核數。

什么時候使用并行GC是個不錯的選擇? 好吧,基本上,只要吞吐量比延遲更重要。

大多數同時收集者

它們被稱為低暫停收集器-旨在最大程度地減少停頓的暫停并保持應用程序盡可能的響應

并發標記和掃描(CMS)

使用并行標記復制算法在多個線程中執行次要GC。 然后將停止所有應用程序線程。 老式服務器通常是同時收集的-當后臺GC線程掃描老式服務器時,應用程序線程會暫停很短的時間。 Major GC期間使用的實際算法是并發標記掃描。 您可能已經注意到,“掃描”之后沒有“壓縮”。 沒錯–并發標記和清除是不會壓縮使用權空間的收集器,因此內存可能會碎片化。 由于缺乏堆壓縮,當GC無法將新對象放入內存時,JVM會回退到串行mark-sweep-compact算法以對舊一代進行碎片整理和壓縮。 那就是性能下降的時候–所有應用程序線程都停止了,只有一個線程負責清理和壓縮Tenured空間。

如前所述,CMS是低暫停收集器的一個示例。 這意味著當延遲是主要目標而不是吞吐量時,這是一個不錯的選擇-因為吞吐量可能由于CPU消耗的增加而降低(在應用程序線程運行時掃描堆不是免費的)。

-XX:+UseConcMarkSweepGC啟用CMS收集器。 過去可以使用-XX:-UseParNewGC (單號“ UseParNewGC”之前的負號,因此使用此標志將禁用Parallel New(Young)GC)來配置具有單線程Young Generation集合的CMS,但已棄用在Java 8中已刪除,在Java 9中已刪除。

G1GC

垃圾優先(G1)是一種新的低中斷垃圾收集器,旨在以最小的暫停處理大型堆。 堆分為固定大小的幾個區域(同時仍保持堆的世代性質)。 這種設計使我們可以在處理整個“年輕一代”或“老一代”時擺脫長時間的STW暫停。 現在,可以分別收集每個區域,這將導致STW停頓時間更短但更頻繁。 G1將對象從一個區域復制到另一個區域,這意味著堆至少已部分壓縮。

G1使用mark-sweep-compact算法的增量版本。 可以通過指定-XX:+UseG1GC標志來啟用它。

摘要

這是本文討論的收集器的簡單比較:

集電極 多個GC線程 STW(年輕一代) STW(老一代) 堆壓實 首要目標
序列號 沒有
平行 通量
內容管理系統 僅在掃描期間 沒有 潛伏
G1 很短的 部分地 潛伏

還有一些其他垃圾收集器,但它們不是HotSpot JVM的一部分。 這些是:

  • C4(Azul Zing JVM)
  • 雪蘭多
  • 平衡(IBM J9 JVM)

在Java 8中,服務器級計算機的默認GC是Parallel Collector。 G1GC在Java 9中將是默認的。默認情況下,客戶端類計算機運行Serial Collector。

翻譯自: https://www.javacodegeeks.com/2017/09/gc-explained-collectors-overview.html

總結

以上是生活随笔為你收集整理的GC解释:收集器概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。