微軟宣布在GitHub上開源用於分析Java垃圾回收日誌檔案的函式庫GCToolkit,GCToolkit將垃圾回收日誌檔案解析為離散事件,並且提供從這些事件中聚合資料的API,微軟提到,這個工具可以讓使用者創建複雜的分析,了解Java虛擬機器(JVM)中的記憶體管理狀態。

JVM中的記憶體管理主要由三部分組成,分別是作為記憶體緩衝區的Java堆(Heap),還有將資料放進Java堆的分配器,以及垃圾回收。雖然垃圾回收負責恢復不再使用的記憶體,但是其實垃圾回收的工作,通常也包含記憶體管理、調校垃圾回收,和調校收集器,因此微軟表示,對於垃圾回收的理解,通常是指調校JVM的記憶體管理子系統。

未最佳化的收集器,可能使得應用程式要耗費更多的CPU和記憶體資源,同時還可能會降低終端用戶體驗,微軟認為,收集器調校不當,通常等同於更高的執行成本和更不滿意的用戶體驗。但是要最佳化垃圾回收,需要面臨許多挑戰,因此微軟發布了GCToolkit,協助用戶掌握記憶體的使用狀態,進而簡化最佳化記憶體管理子系統的工作。

GCToolkit由3個Java模組構成,API、垃圾回收日誌解析器,以及基於Vert.x的訊息傳遞背板,API模組是GCToolkit的入口點,讓用戶以簡單的方法,使用解析器和Vert.x來分析垃圾回收日誌檔案,解析器模組為正規表示式和程式碼的集合,而Vert.x的訊息背板則使用2條訊息匯流排,第1條訊息匯流排來自資料源,在這匯流排上的監聽者則是解析器,可以把資料源中的資料,轉換成代表垃圾回收周期,或是安全點的事件,接著再將這些事件發布到第2條事件匯流排,事件匯流排上的監聽器,能夠接受和處理感興趣的事件。

解析器發出離散的JVM事件,因此用戶就可以編寫程式碼來捕捉和分析這些事件資料,GCToolkit提供了簡單的聚合器和聚合框架,可用來捕捉和分析垃圾回收檔案資料。捕捉事件的程式碼稱為聚合器,分析資料的程式碼稱為聚合器,聚合器可以捕捉多個事件進行分析。

熱門新聞

Advertisement