Microsoft libero el código fuente de GCToolkit
Microsoft ha dado a conocer hace pocos dias la noticia de que ha liberado el código fuente de su herramienta «GCToolkit», el cual es un conjunto de bibliotecas para analizar los archivos de registro de Java Garbage Collection, con lo cual todo el código de GCToolkit está disponible en GitHub bajo la licencia MIT.
GCToolkit consta de tres módulos Java que cubren API, analizadores de archivos de registro de GC y una placa posterior de mensajes basada en el kit de herramientas Vert.x para crear aplicaciones receptivas en la JVM. Con esta utilidad, los usuarios pueden crear exploraciones arbitrarias y complejas del estado de la memoria administrada en la JVM.
Como su nombre indica, este es un conjunto de bibliotecas para analizar archivos de registro de recolección de basura (GC) de Java y analizarlos en eventos separados. Expone una API para mejorar la interacción con el kit de herramientas y la agregación de datos, esto permite al usuario crear análisis complejos arbitrarios del estado de la memoria administrada de la JVM.
Según el equipo, este es el punto de entrada del usuario en GCToolkit que oculta los detalles de los módulos internos en unas pocas llamadas a métodos. Además de la API, hay otros dos módulos: el módulo de análisis sintáctico y Vert.x. El Módulo Analizador se basa en una colección de expresiones regulares y código escrito para ser considerado el analizador de registros GC más robusto disponible.
El back-end de mensajería basado en Vert.xutiliza dos buses de mensajes: el primero transmite datos desde una fuente de datos. La implementación actual pasa líneas de registro del archivo de registro de GC. Los consumidores de este bus son los analizadores que convierten los datos de la fuente de datos en eventos que representan un ciclo de GC o un punto seguro. Estos eventos se publican en el segundo bus de mensajes: el bus de eventos. Los suscriptores del bus de eventos pueden entonces ser notificados y procesar los eventos que les interesan.
El analizador emite eventos JVM discretos, lo que le permite escribir código para capturar y analizar datos de estos eventos. Para facilitar la captura de datos y el análisis de los archivos de registro de GC, GCToolkit proporciona un marco de agregación simple. El tipo de datos que los usuarios desean capturar o el tipo de análisis que desean realizar queda a discreción del usuario. Por ejemplo, para capturar eventos de pausa con el fin de analizar la ocupación del montón, el agregador captura el evento, extrae los datos relevantes y pasa los datos a la agregación.
Esto reúne los datos en un análisis significativo, por ejemplo, la ocupación total del montón después de la recolección de basura. Los datos resultantes se pueden presentar en forma de gráfico, tabla u otro formato más fácil de usar. Más importante aún, según el equipo, una configuración subóptima del colector resultará en una aplicación que requerirá más CPU y memoria, mientras degrada la experiencia del usuario final. En otras palabras, un colector mal ajustado a menudo significa un tiempo de ejecución más caro y usuarios insatisfechos.
Con el creciente interés de Microsoft en la plataforma Java, el enfoque en el código abierto también está aumentando los beneficios para la comunidad Java. Después de realizar importantes contribuciones para portar macOS M1 y Windows to Arm, Microsoft reafirmó su compromiso con OpenJDK al presentar su propia versión de OpenJDK y uniéndose al grupo de trabajo Eclipse Adoptium (anteriormente conocido como AdoptOpenJDK).
Al hacer que GCToolkit sea de código abierto, Microsoft está intentando proporcionar una mejor manera de ver los detalles internos de la JVM sobre cómo maneja GC y la asignación de memoria. Una mejor visibilidad permite una mejor configuración, lo que beneficia tanto a los usuarios finales de la aplicación como al personal técnico responsable de su gestión.
La API simple y los mecanismos de salida fáciles de usar prometen mejorar la tarea de leer los registros de GC al proporcionar varios mecanismos para analizar, extraer y visualizar datos.
Fuente: https://devblogs.microsoft.com