首頁  >  文章  >  Java  >  Java 垃圾收集器的類型

Java 垃圾收集器的類型

PHPz
PHPz原創
2024-08-30 15:54:06474瀏覽

Java垃圾收集器的類型定義了我們用來開發程式的類型。垃圾收集是Java的重要特性。在Java中,我們使用垃圾收集來釋放不再使用的記憶體。垃圾收集器追蹤所有仍在使用的對象,並將其餘對象標記為垃圾。垃圾收集器使用掃描和標記演算法。

在Java中,垃圾回收無非就是記憶體的管理;我們正在使用 JVM 做同樣的事情。透過使用垃圾收集,我們不需要使用程式設計師來處理物件的分配和釋放。在java應用程式中透過使用作業系統來分配和釋放內存,我們從應用程式和新變數的垃圾收集中提供相同的記憶體。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

Java提供了多種垃圾收集器,滿足應用程式的不同需求。為我們的應用程式選擇正確的垃圾收集器對於提高應用程式的效能非常重要。 Java提供了多種類型的垃圾收集器來滿足應用程式的需求。

Java 垃圾收集器的類型

要點

  • Java中的平行GC被稱為JVM中使用的預設垃圾收集器。並行GC的工作原理與串列GC相同。
  • 串列垃圾收集器與單執行緒環境相符。它使用單線程進行 GC。

Java 垃圾收集器的種類

以下是 Java 垃圾收集器的型別。

我們根據我們的要求使用這些類型,如下;

  • 串列垃圾收集器
  • 平行垃圾收集器
  • 併發標記清除垃圾收集器
  • G1 垃圾收集器
  • Epsilon 垃圾收集器
  • Z 垃圾收集器
  • Shenandoah 垃圾收集器

每個垃圾收集器的工作和性能都不同;它包含自己的優點和缺點。 Java 允許我們選擇 JVM 使用的任何垃圾收集器。在選擇垃圾收集器時,我們需要傳遞JVM的參數。

1.串列垃圾收集器

這個垃圾收集器在保留應用程式的所有執行緒的同時運作。所以我們可以說我們的應用程式的線程透過使用串行垃圾收集器的過程而凍結;這個過程被稱為世界和停止事件。為了在伺服器環境中使用串列垃圾收集器,我們可以在簡單的程式中使用它。

要使用串列垃圾收集器,我們需要在 JVM 的參數中執行 –XX:+UseSerialGC。我們可以在使用串列垃圾收集器時指定它。

2.平行垃圾收集器

並行GC和串行GC的唯一區別是並行GC使用多個線程,而串行GC僅使用單一線程。我們正在使用並行 GC 來加快應用程式的吞吐量;這也稱為吞吐量收集器。

要使用平行垃圾收集器,我們需要在 JVM 的參數中使用 –XX:+UseParallelGC。開發 Java 應用程式時,並行和串行垃圾收集器是必不可少的。

3. CMS 垃圾收集器

在CMS GC中,我們使用多個線程,這些線程用於堆疊和掃描,這將標記標記實例的驅逐。這種類型的GC在GC時不會凍結應用程式執行緒。垃圾收集器的執行緒與應用程式執行緒同時執行。

使用這個垃圾收集器,我們可以使用多個 CPU 來提高應用程式的吞吐量。如果我們有更多的 CPU 可供使用,我們將使用 CMS GC。要使用CMS垃圾收集器,我們需要在JVM參數中使用–XX:+UseParNewGC。我們在使用這個垃圾收集器時使用這個 Java 虛擬機器參數。

4. G1 垃圾收集器

如果記憶體超過 4 GB,則使用 G1 垃圾收集器。此 GC 將堆劃分為相同大小的區塊,並按照優先順序執行並行垃圾收集。 G1 垃圾收集器正在顯示全域標記階段。

在完成標記階段時,此垃圾收集器會收集包含垃圾收集器物件的資訊。那麼要使用G1垃圾收集器,我們需要在JVM的參數中使用–XX:+UseG1GC。

5. Epsilon 垃圾收集器

這是一個被動或不可操作的垃圾收集器。此垃圾收集器為應用程式分配內存,但不會收集未使用的物件。當應用程式耗盡堆時,JVM 將關閉,因此我們可以說這次 GC 允許應用程式記憶體不足或崩潰。

這個垃圾收集器的主要目的是管理和測量應用程式的效能。這個垃圾收集器包含在程式內部運作的複雜程式。

6. Z 垃圾收集器

這個垃圾收集器同時執行所有工作,而不會停止我們應用程式的執行。此垃圾收集器處理包含多個 TB 大小的堆。

這種類型的垃圾收集器在執行緒中執行其循環。它將在平均 1 MS 時間內暫停其應用程式。

7.謝南多厄垃圾收集器

這種類型的垃圾收集器使用記憶體區域來管理哪些物件不再使用以及哪些物件已準備好進行壓縮。此垃圾收集器將轉送指標新增至每個堆,該堆使用指定物件的控制存取權。

JVM 參數

以下是 Java 虛擬機器的參數。我們在垃圾收集器中使用這些參數,如下所示。

  • –XX:ParallelGCThreads=: 此參數控制 GC 執行緒數。
  • –XX:MaxGCPauseMillis=: 此參數指定最大暫停時間。
  • –XX:GCTimeRatio=: 此參數指定最大吞吐量目標。
  • –XX:+UseSerialGC: 此參數指定串列垃圾收集器。
  • –XX:+UseParallelGC: 此參數指定並行垃圾收集器。
  • –XX:+UseG1GC: 此參數指定 G1 垃圾收集器。
  • –XX:+UseConcMarkSweepGC: 此參數指定 CMS 垃圾收集器。
  • –XX:ParallelCMSThreads: 此參數指定 CMS 收集器和我們使用的執行緒數。
  • -XX:InitiatingHeapOccupancyPercent=: 此參數控制啟動並發週期時的堆佔用率。
  • -XX:G1MixedGCLiveThresholdPercent=: 當舊區域中存在活動物件時,此參數將其值從 GC 物件中排除。
  • -XX:G1HeapWastePercent=: 此參數指定允許浪費的區域數量。

結論

Java提供了多種垃圾收集器來滿足各種應用程式的需求。為我們的應用程式選擇正確的垃圾收集器以提高其效能至關重要。 java垃圾收集器的類型定義了我們在開發程式時將使用的垃圾收集器的類型。 Java 有一個重要的特性,叫做垃圾回收。

以上是Java 垃圾收集器的類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:Java 9 模組下一篇:Java 9 模組