文|白開水
微軟的 Java 工程組宣布開源了 GCToolkit,壹組用於分析 Java garbage collection (GC) 日誌文件的庫。
根據介紹,GCToolkit 工具包將 GC 日誌文件解析為離散事件,並提供了壹個API 用於從這些事件聚合數據,使用戶能夠對由垃圾收集日誌表示的 Java 虛擬機(JVM)中托管內存的狀態進行任意復雜的分析。
GCToolkit 由 3 個 Java 模塊組成,涵蓋 API、GC 日誌文件解析器和基於 Vert.x 的 messaging backplane。
其中,API 模塊是 GCToolkit 的入口;它把使用解析器和 Vert.x 分析 GC 日誌文件的細節隱藏在幾個方法調用中。解析器模塊是壹個正則表達式和代碼的集合;微軟方面稱,經過多年的發展,其已經成為最強大的 GC 日誌解析器。
基於 Vert.x 的 messaging backplane 使用了 2 條消息總線,第壹條消息總線來自數據源。當前的實現是從 GC 日誌文件流式傳輸 log lines。這條總線上的監聽器是將數據源的數據轉換為代表 GC 周期或安全點的事件的解析器。然後這些事件被發布在事件總線上,事件總線上的監聽器能夠接收和處理他們感興趣的事件。
GCToolkit 還提供了壹個簡單的聚合器/聚合框架,用於捕獲和分析 GC 日誌文件數據。