當前位置:首頁 » 操作系統 » jvmgc演算法

jvmgc演算法

發布時間: 2025-08-06 14:29:01

『壹』 JVM系列(九):MinorGC、MajorGC、FullGC垃圾回收介紹

MinorGC、MajorGC和FullGC介紹如下

1. MinorGC定義:發生在年輕代空間的垃圾回收過程。 特點:由於Java對象大多生命周期短暫,因此Minor GC非常頻繁,且回收速度較快。 演算法:一般採用復制演算法。 影響:可能會引發STW,直到JVM垃圾回收結束後,用戶線程才恢復運行。

2. Major GC定義:發生在老年代的GC。 觸發條件:當老年代空間不足時,會先嘗試觸發Minor GC。如果Minor GC之後空間仍然不足,則會觸發Major GC。 伴隨情況:基本上進行一次Major GC就會伴隨進行一次Minor GC。 速度:一般比Minor GC慢10倍,且STW的時間更長。

3. Full GC定義:可以理解為Major GC和Minor GC組合後進行的一整個過程,清理JVM整個堆空間。 觸發條件:Full GC的觸發條件多樣,但都會產生應用程序的停頓現象。 影響:當停頓產生時,整個應用程序線程都會被暫停,可能導致應用程序看似卡死的情況。

以上是對MinorGC、MajorGC和FullGC垃圾回收的簡要介紹,希望對你有所幫助。

『貳』 JVM垃圾回收之Minor GC

JVM中的Minor GC是指發生在新生代內存空間的垃圾回收過程。以下是關於Minor GC的詳細解釋:

  1. 觸發條件

    • 當JVM運行過程中,新生代內存空間逐漸不足時,會觸發Minor GC。
  2. 垃圾回收過程

    • 使用可達性分析演算法來識別哪些對象可以被回收。該演算法主要查找對象是否被GC Roots引用,如果發現有引用,則該對象不可回收。
    • GC Roots通常包括方法的局部變數和靜態變數引用的對象。
  3. 對象的引用類型

    • 強引用:直接由變數指向的對象,不會被回收。
    • 軟引用:在內存不足時會被回收。
    • 弱引用:在垃圾回收時一定會被回收。
    • 虛引用:用於在對象被回收時收到通知,實際應用中很少用到。
  4. finalize方法的影響

    • 存在GC Roots的對象不會被回收,但不意味著所有不存在GC Roots的對象一定會被回收。
    • 對象可以通過重寫finalize方法來避免回收,垃圾回收器在執行回收前會調用finalize方法,判斷是否有引用存在,若存在則不進行回收,直到下一次垃圾回收再次確認該對象沒有引用才進行回收。
  5. 新生代內存模型

    • Eden區佔新生代內存的80%,Survivor區各佔10%。
    • 對象在Eden區中創建後,當Eden區滿時觸發Minor GC,存活對象轉移到一個Survivor區,Eden區清空。
    • 下一次GC時,Eden區和上次存活對象所在的Survivor區中存活對象轉移到另一個Survivor區,Eden區再次清空。
    • 通過這樣的循環使用Survivor區,確保每次GC後都能得到較大連續的內存空間,減少內存碎片,提高內存使用效率。
  6. 意義

    • Minor GC結合高效垃圾回收演算法和新生代內存模型,顯著提升內存分配性能,有效控制內存碎片,保證內存使用效率,是JVM新生代內存管理的高效策略。

『叄』 JVM的垃圾演算法有哪幾種

一、垃圾收集器概述

如上圖所示,垃圾回收演算法一共有7個,3個屬於年輕代、三個屬於年老代,G1屬於橫跨年輕代和年老代的演算法。

JVM會從年輕代和年老代各選出一個演算法進行組合,連線表示哪些演算法可以組合使用

二、各個垃圾收集器說明

1、Serial(年輕代)

  • 年輕代收集器,可以和Serial Old、CMS組合使用

  • 採用復制演算法

  • 使用單線程進行垃圾回收,回收時會導致Stop The World,用戶進程停止

  • client模式年輕代默認演算法

  • GC日誌關鍵字:DefNew(Default New Generation)

  • 圖示(Serial+Serial Old)

    7、G1

  • G1收集器由於沒有使用過,所以從網上找了一些教程供大家了解

  • 並行與並發

  • 分代收集

  • 空間整合

  • 可預測的停頓

熱點內容
怎麼電腦密碼 發布:2025-08-10 23:03:53 瀏覽:738
虛擬機下安裝linux 發布:2025-08-10 23:02:21 瀏覽:761
有哪些配置好車 發布:2025-08-10 22:57:19 瀏覽:905
我的世界冷小壞伺服器 發布:2025-08-10 22:51:59 瀏覽:956
windows下編譯php擴展 發布:2025-08-10 22:43:53 瀏覽:726
鏈表反轉c語言 發布:2025-08-10 22:43:40 瀏覽:285
c語言求兩數之和 發布:2025-08-10 22:37:08 瀏覽:774
phptype 發布:2025-08-10 22:29:23 瀏覽:902
ios和android區別 發布:2025-08-10 22:24:00 瀏覽:832
安卓host是什麼意思 發布:2025-08-10 22:23:09 瀏覽:457