Enquête sur une fuite de mémoire Go 1.24 : une découverte inattendue et la surprise des tables suisses

Après la sortie de Go 1.24, une augmentation inattendue de l'utilisation de la mémoire a été observée dans un service de traitement de données. L'enquête a révélé qu'une refactorisation d'une fonction d'allocation de mémoire dans le runtime Go avait supprimé par inadvertance une optimisation, entraînant un effacement inutile de la mémoire lors de l'allocation d'objets volumineux, augmentant ainsi la taille du jeu résident (RSS). Bien que les métriques internes du runtime Go n'aient pas changé, les métriques de niveau système ont révélé une augmentation significative de l'utilisation de la mémoire. La collaboration avec la communauté Go a permis d'identifier et de résoudre le problème. De manière surprenante, la nouvelle fonctionnalité « tables suisses » de Go 1.24 a réduit de manière significative l'utilisation de la mémoire dans les environnements à fort trafic, compensant la régression précédente et générant même des économies de mémoire supplémentaires.