Usa Flight Recorder, que viene incorporado en la JVM y está diseñado para grabación continua de bajo impacto. Arráncalo con jcmd sobre un proceso en ejecución, captura una ventana, y abre la grabación en Mission Control para ver métodos calientes, asignación por punto de origen, contención de locks, recolección de basura y tasas de excepciones. Para flame graphs con frames nativos y de Java juntos, un async profiler es el compañero habitual, y los volcados de heap siguen siendo la herramienta para las fugas.
Por qué lo preguntan los entrevistadores
El entrevistador comprueba que puedes investigar un sistema vivo con herramientas reales en vez de añadir logs de tiempos y redesplegar. Saber que Flight Recorder viene incluido y es seguro en producción, y que las vistas interesantes son la asignación y la contención de locks más que solo la CPU, es el diferenciador. También abre la conversación sobre perfilar con honestidad, ya que un benchmark con el JIT caliente no es lo mismo que producción.
Cómo estructurar tu respuesta
- Nombra la herramienta incorporada y por qué es segura en producción.
- Describe cómo arrancas una grabación sobre un proceso en ejecución.
- Di qué vistas miras y en qué orden.
- Añade herramientas complementarias para fugas y flame graphs.
Ejemplo de respuesta
Flight Recorder primero, porque viene con la JVM y el perfil por defecto tiene un impacto lo bastante bajo como para dejarlo corriendo. Me engancho con jcmd al proceso en ejecución, grabo unos minutos que incluyan el comportamiento lento, hago el volcado y lo abro en Mission Control. El orden en que miro las cosas depende del síntoma. Para CPU voy a los métodos calientes, pero para latencia normalmente aprendo más de la asignación por punto de llamada, porque asignar en exceso provoca pausas de recolección, y de la contención de locks, donde un bloque synchronized en una ruta caliente aparece de inmediato. La recolección de basura y las tasas de excepciones están en la misma grabación, así que puedo correlacionar en vez de adivinar. Si quiero un flame graph que muestre frames nativos junto a los de Java, uso un async profiler, que además evita el sesgo de safepoint que tenían los perfiladores de muestreo antiguos. Para fugas de memoria la herramienta es un volcado de heap y un árbol de dominadores, ya que un perfil me muestra asignación, no retención. Y siempre comparo contra una grabación de referencia de un periodo sano, porque un perfil por sí solo no tiene ninguna noción de lo normal.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Qué impacto añade el perfil por defecto de Flight Recorder?
- ¿Qué es el sesgo de safepoint, y por qué importa para los perfiladores?
- ¿Cómo perfilarías un problema de arranque en vez de uno de régimen estable?
Más preguntas para Desarrollador Java
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas