【JVM系列】無操作回收器 Epsilon

槑!發表於2020-10-26

無操作

Epsilon收集器

自動記憶體管理子系統

  • Epsilon,是一款以不能夠進行垃圾收集為“賣點”的垃圾收集器,被形容成一個無操作的收集器(A No-Op Garbage Collector)。而事實上只要Java虛擬機器能夠工作,垃圾收集器便不可能是真正“無操作”的。
  • 原因是“垃圾收集器”這個名字並不能形容它全部的職責,更貼切的名字應該是“自動記憶體管理子系統”。一個垃圾收集器除了垃圾收集這個本職工作之外,它還要負責堆的管理與佈局、物件的分配、與直譯器的協作、與編譯器的協作、與監控子系統協作等職責,其中至少堆的管理和物件的分配這部分功能是Java虛擬機器能夠正常運作的必要支援,是一個最小化功能的垃圾收集器也必須實現的內容。

應用場景

  • 從JDK 10開始,為了隔離垃圾收集器與Java虛擬機器解釋、編譯、監控等子系統的關係,RedHat提出了垃圾收集器的統一介面,即JEP 304提案,Epsilon是這個介面的有效性驗證和參考實現,同時也用於需要剝離垃圾收集器影響的效能測試和壓力測試。
  • 傳統Java有著記憶體佔用較大,在容器中啟動時間長,即時編譯需要緩慢優化等特點,這對大型應用來說並不是什麼太大的問題,但對短時間、小規模的服務形式就有諸多不適。如果應用只要執行數分鐘甚至數秒,只要Java虛擬機器能正確分配記憶體,在堆耗盡之前就會退出,那顯然執行負載極小、沒有任何回收行為的Epsilon便是很恰當的選擇。

相關文章