Linux Adictos Darkcrizt  

OpenJDK está considerando incluir la API asíncrona Stack Trace VM 

OpenJDK

OpenJDK es la versión libre de la plataforma de desarrollo Java bajo concepto de lenguaje orientado a objetos.

Hace poco se lanzó una propuesta para promover los seguimientos de la pila asincrónica en Java y que está prosperando en el proceso de mejora de Java de OpenJDK.  Se pretende que el proyecto defina una API AsyncGetStackTrace para recopilar seguimientos de pila de forma asíncrona e incluir datos sobre Java y marcos de pila nativos.

Según la propuesta, el rendimiento no se vería afectado cuando la API no está en uso y los requisitos de memoria no aumentarían significativamente en comparación con la API AsyncGetCallTrace existente. La nueva API no se recomendaría para uso en producción, ya que podría bloquear la JVM. Los planes incluyen minimizar los riesgos de tal incidente a través de pruebas y verificaciones exhaustivas.

AsyncGetCallTracees utilizado por la mayoría de los generadores de perfiles disponibles, tanto de código abierto como comerciales, incluidos asíncrono-perfilador. Pero tiene dos grandes inconvenientes.

  1. esta es una API interna, no exportada en ningún encabezado;
  2. solo devuelve información sobre los marcos de Java, es decir, su método y los índices de código de bytes.

Estos problemas dificultan la implementación de perfiladores y herramientas relacionadas. Aunque se puede extraer información adicional de HotSpot VM a través de un código complejo, otra información útil está oculta y es imposible de obtener:

Si un marco Java compilado esen línea(actualmente, solo se puede obtener para los marcos compilados más altos).

El nivel de compilación de un marco Java (es decir, compilado por C1 o C2).
Información sobre marcos C/C++ que no están en la parte superior de la pila.

Estos datos pueden ser útiles al perfilar y ajustar una máquina virtual para una aplicación determinada, así como al perfilar código que usa mucho JNI.

La API se modelaría en la APIAsyncGetCallTrace, ademas de que la nueva API aún no se ha ofrecido para una versión específica de Java estándar. El próximo lanzamiento de Java es (JDK) 20, que se espera para marzo de 2023. Java tiene un proceso formal para incorporar cambios en la plataforma que ha logrado responder a las circunstancias cambiantes al mismo tiempo que logra un alto grado de estabilidad.

Los generadores de perfiles pueden llamar a esta API para obtener el seguimiento de la pila para el subproceso que se está ejecutando actualmente. Llamar a esta API desde un controlador de señales es seguro y la nueva implementación será al menos tan estable como el código de seguimiento de pila del JFR. La máquina virtual completa la información del marco y el recuento de marcos. La persona que llama a la API debe asignar la matriz de llamadas con suficiente memoria para la profundidad de pila solicitada.

La máquina virtual completa la estructura de seguimiento que contiene el número real de imágenes en la matriz de imágenes o un código de error.  Los códigos de error son un subconjunto de los códigos de error para AsyncGetCallTrace.

Aunque la API proporciona más información, el espacio requerido por marco (por ejemplo, 16 bytes en x86) es el mismo que para la APIAsyncGetCallTrace existente. La devolución de información sobre los marcos de C/C++ da como resultado la divulgación de los detalles de implementación, pero esto también es cierto para los marcos de Java deAsyncGetCallTrace ya que revelan detalles de implementación de archivos de biblioteca estándar e incluyen marcos de envoltura nativos.

Incluso un desarrollador de Java experimentado puede no tener una buena comprensión de cómo se desarrolla y mantiene la plataforma. La principal lección que se debe aprender es que este es verdaderamente un proceso abierto.

La base del desarrollo de Java es el Java Community Process (JCP). Es una especie de documento básico autoconsciente que define cómo introducir cambios en la plataforma y también permite modificar el propio proceso. La última versión del JCP es la 2.11, que se adoptó en 2019.

JCP formaliza cómo se proponen, revisan y aprueban nuevas características y cambios en Java (es decir, especificaciones técnicas), incluida la definición de varios roles que las personas pueden ocupar. Estos roles ayudan a proporcionar un lugar donde la comunidad de usuarios de Java puede participar en el gobierno de la plataforma.

Para proponer nuevas funcionalidades y cambios, JCP permite la creación («iniciación») de Java Specification Requests (JSR). Esto se hace a través de un formulario estandarizado. Para acceder al formulario, debe registrarse para obtener una cuenta JCP gratuita.

A partir de ahí, muchos cambios, pequeños o no, llegan a las tecnologías Java que usamos todos los días. Cuando llega un JSR, ingresa al proceso de revisión de JSR. Es un proceso de varios pasos en el que los cambios propuestos en el JSR se consideran gradualmente con más seriedad, se modifican y finalmente se adoptan o se suspenden.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.