微软的 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 日志文件数据。
微软 Kirk 称,一个不理想的配置收集器会导致你的应用程序需要更多的 CPU 和内存,同时降低你的最终用户体验。“挑战在于,要优化调整 GC,需要在几个关注点之间建立一种微妙的平衡,如果没有工具的帮助,所有这些关注点都不容易看到。GCToolKit 则有助于使这些变得更加容易。”