Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Referencias:
①Utilice mtrace para rastrear pérdidas de memoria fuera del montón de JVM
②Un caso de solución de problemas de uso elevado de memoria Java
Obtenga la ubicación de la pérdida de memoria (consulte los materiales de referencia ① para obtener comandos detallados)
Utilice jna para habilitar mtrace en el código Java para realizar un seguimiento de la asignación de memoria
Utilice el comando mtrace para analizar archivos de registro y obtener puntos de llamada de pérdida de memoria.
arthas verifica la pila de llamadas del punto de llamada de pérdida de memoria (puede usar la dirección del punto de llamada directamente, no se requiere ningún nombre de función)
Obtenga contenido de pérdida de memoria (consulte los materiales de referencia ② para obtener comandos detallados)
Al probar un servicio fuera de línea, cuando el QPS es alto, la memoria ocupada por el área nio.directbuffer de la máquina aumentará repentinamente, lo que provocará que se produzca OOM en el contenedor.
Utilizando las ideas de solución de problemas anteriores, finalmente determinamos que nuestro marco RPC generó una gran cantidad de datos en el área del búfer directo. De hecho, cuando el QPS es alto, la cantidad de subprocesos selectores es pequeña y la capacidad de consumo es insuficiente, lo que genera una acumulación de datos de solicitud y respuesta en el área del búfer directo.