JVM所有的垃圾回收器已整理完畢,請笑納!
作者:猿java
Java 垃圾回收器是Java虛擬機(JVM)中的一個重要組件,無論是日常開發,還是技術面試中,它都是一個非常重要的知識點。
Java 垃圾回收器(Garbage Collector,GC)是Java虛擬機(JVM)中的一個重要組件,無論是日常開發,還是技術面試中,它都是一個非常重要的知識點。
那么,如何才能系統性地學習 JVM垃圾回收器的相關知識呢?這篇文章,我們整理了過往所有關于 JVM回收器的文章,希望可以幫到你。
首先,讓我們從全局來了解下 JVM垃圾回收器的類型以及它們的特點,優缺點和適用場景:
1. Serial Garbage Collector
- 特點: 使用單線程進行垃圾回收。
- 適用場景: 適用于單處理器機器或小型應用程序。
- 優點: 實現簡單,開銷低。
- 缺點: 會導致較長的暫停時間,影響應用程序性能。
2. Parallel Garbage Collector
- 特點: 使用多線程進行垃圾回收。
- 適用場景: 適用于多處理器機器和需要高吞吐量的應用程序。
- 優點: 提高了垃圾回收的效率,減少了暫停時間。
- 缺點: 在垃圾回收期間,應用程序仍然會暫停。
3. CMS (Concurrent Mark-Sweep) Garbage Collector
- 特點: 主要目標是減少暫停時間,適用于需要低延遲的應用。
- 適用場景: 適用于對響應時間要求較高的應用程序。
- 優點: 大部分垃圾回收工作在與應用程序并發進行,減少了暫停時間。
- 缺點: 可能會產生內存碎片,需要更多的CPU資源。
4. G1 (Garbage-First) Garbage Collector
- 特點: 設計用于處理大堆內存,提供可預測的暫停時間。
- 適用場景: 適用于大內存和需要可預測暫停時間的應用程序。
- 優點: 分區回收內存,減少了長時間的暫停,適合大堆內存。
- 缺點: 相比其他垃圾回收器,調優復雜度較高。
5. ZGC (Z Garbage Collector)
- 特點: 設計目標是處理大堆內存,且暫停時間非常短(通常低于10毫秒)。
- 適用場景: 適用于超大內存應用和對暫停時間極為敏感的應用。
- 優點: 極低的暫停時間,可處理TB級別的堆內存。
- 缺點: 目前還在不斷發展和優化中,可能不如其他垃圾回收器穩定。
6. Shenandoah Garbage Collector
- 特點: 類似于ZGC,目標是提供低暫停時間。
- 適用場景: 適用于低延遲和大堆內存的應用。
- 優點: 低暫停時間,適合大內存應用。
- 缺點: 需要更多的CPU資源,復雜度較高。
所有 JVM垃圾回收器對比如下圖:
最后,雖然 JVM垃圾回收器的知識很重要,但是它真的有點難,而且在日常開發中,很多小伙伴常年奮斗在CRUD業務上,很少和JVM直接打交道,因此,理解和掌握回收器的原理需要一個過程。
責任編輯:趙寧寧
來源:
猿java