Maison >développement back-end >Golang >Raisons des fuites de mémoire Golang

Raisons des fuites de mémoire Golang

(*-*)浩
(*-*)浩original
2019-12-27 10:47:104132parcourir

Raisons des fuites de mémoire Golang

1. Exercer une pression sur le système augmentera l'utilisation de la mémoire, mais si la mémoire ne peut pas être réduite après l'arrêt de la pression, il peut y avoir une fuite de mémoire. (Apprentissage recommandé : GO )

2, TOP ne peut pas refléter la procédure d'occupation de la mémoire en temps réel, car le système ne renvoie pas le système immédiatement après l'application n'utilise pas la mémoire du système.

3. Le programme occupe la mémoire système, la mémoire tas de Go et la mémoire réellement utilisée : la mémoire appliquée par le système sera gérée dans le pool de mémoire de Go et la page mémoire entière ne sera pas accessible pendant longtemps. Il n'est renvoyé au système d'exploitation qu'une fois certaines conditions remplies. Et à cause du GC, la mémoire tas ne représente pas l'utilisation de la mémoire. Ce qui reste après le nettoyage est la mémoire réellement utilisée.

Il existe deux façons de détecter les fuites de mémoire dans Go, l'une est un outil de surveillance général et l'autre est go pprof :

Outil de surveillance : surveillance à période fixe de le processus L'utilisation de la mémoire est échantillonnée. Une fois les données visualisées, il est facile de déterminer si une fuite de mémoire se produit en fonction de la tendance d'utilisation de la mémoire (augmentation continue).

go pprof : convient aux situations où il n'y a pas d'outil de surveillance. Utilisez l'outil pprof fourni par Go pour déterminer si une fuite de mémoire s'est produite.

Outils de surveillance pour vérifier l'utilisation interne du processus

Si vous utilisez la plateforme cloud pour déployer des programmes Go, la plateforme cloud fournit des outils de visualisation de la mémoire pour vérifier la mémoire utilisation du système d'exploitation. Et l'utilisation de la mémoire d'un certain processus, tel qu'Alibaba Cloud, nous déployons un seul service Go sur un hôte cloud, de sorte que l'utilisation de la mémoire du système d'exploitation reflète essentiellement l'utilisation de la mémoire du processus. est la suivante, vous pouvez voir qu'au fil du temps, l'utilisation de la mémoire continue d'augmenter, ce qui est le phénomène le plus évident des fuites de mémoire :

Raisons des fuites de mémoire Golang

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn