Activa el logging de recolección de basura y alinea las marcas de tiempo de las pausas con las peticiones lentas. Si los picos coinciden con pausas, mira la tasa de asignación, la promoción y el margen del heap antes de tocar ningún flag, ya que la mayoría de las pausas vienen de asignar demasiado o de un heap demasiado pequeño. Si no coinciden, revisa el tiempo hasta safepoint, porque un safepoint largo detiene a todos los hilos y se parece exactamente a una pausa de recolección.
Por qué lo preguntan los entrevistadores
Depurar la latencia de cola es una habilidad senior, y el entrevistador quiere evidencia en vez de adivinar flags. Correlacionar los logs de pausas con las trazas de peticiones, y saber que los safepoints, los fallos de página o un vecino ruidoso en el contenedor pueden producir el mismo síntoma, demuestra pensamiento metódico. También revela si arreglarías la causa en la aplicación o la taparías afinando el recolector.
Cómo estructurar tu respuesta
- Consigue los datos: logs de recolección de basura más tiempos por petición.
- Correlaciona las ventanas de pausa con las peticiones lentas.
- Investiga la tasa de asignación y el dimensionado del heap antes que los flags.
- Considera causas ajenas a la recolección, como los safepoints o la plataforma.
Ejemplo de respuesta
Quiero dos líneas temporales. El logging unificado me da cada pausa con su causa y su duración, y mis trazas me dan las peticiones lentas, así que la primera pregunta es simplemente si se alinean. Si lo hacen, me resisto a cambiar flags y miro por qué. Normalmente el servicio asigna enormemente por petición, algo como construir listas intermedias en un bucle o loguear un payload serializado en cada llamada, así que el arreglo es asignar menos. A veces el heap está demasiado justo y las recolecciones corren sin parar, o en G1 el código asigna arrays grandes que se convierten en objetos humongous y se portan mal. Solo después de eso consideraría pasar a un recolector de pausa baja, y lo trataría como un compromiso y no como una ganancia gratis. Si las pausas no correlacionan, miro en otra parte: el tiempo hasta safepoint puede ser largo aunque la recolección en sí sea corta, así que un hilo en un bucle contado deja parados a todos. También he perseguido un caso que resultó ser throttling de CPU del contenedor, donde el proceso quedaba desplanificado del todo y ningún ajuste de la JVM habría ayudado.
¿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é es un safepoint, y por qué puede tardar mucho en alcanzarse?
- ¿Cómo reducirías la tasa de asignación en una ruta de petición caliente?
- ¿Cómo se manifiesta el throttling de CPU del contenedor en las métricas de la JVM?
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