2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Les références:
①Utilisez mtrace pour suivre les fuites de mémoire hors tas de la JVM
②Un cas de dépannage d'utilisation élevée de la mémoire Java
Obtenez l'emplacement de la fuite de mémoire (voir les documents de référence ① pour les commandes détaillées)
Utilisez jna pour activer mtrace dans le code Java afin de suivre l'allocation de mémoire
Utilisez la commande mtrace pour analyser les fichiers journaux et obtenir des points d'appel de fuite de mémoire.
arthas vérifie la pile d'appels du point d'appel de fuite de mémoire (vous pouvez utiliser l'adresse du point d'appel directement, aucun nom de fonction n'est requis)
Obtenir le contenu de la fuite de mémoire (voir les documents de référence ② pour les commandes détaillées)
Lors du test d'un service hors ligne, lorsque le QPS est élevé, la mémoire occupée par la zone nio.directbuffer de la machine augmentera soudainement, provoquant l'apparition d'un MOO dans le conteneur.
En utilisant les idées de dépannage ci-dessus, nous avons finalement déterminé que notre framework RPC générait une grande quantité de données dans la zone du tampon direct. En effet, lorsque le QPS est élevé, le nombre de threads de sélection est faible et la capacité de consommation est insuffisante, ce qui entraîne un retard des données de requêtes et de réponses dans la zone du tampon direct.