Optimiser le garbage collection JVM sur conteneur

margaret55 04/05/2026
RÉSOLU
margaret55
Auteur Actif
Avatar de margaret55
margaret55
Auteur Actif

Mon application Spring Boot sur EKS consomme énormément de mémoire vive, bien plus que ce qui est alloué au heap. Le conteneur finit par être tué par l'OOM Killer alors que le heap est à 50%.

Je soupçonne la Native Memory Tracking (NMT) de déborder. Comment configurer correctement MaxRAMPercentage et le ReservedCodeCacheSize pour éviter ce décalage ?

04/05/2026 à 03:14

11 commentaires

girard-richard
Membre Actif
Avatar de girard-richard
girard-richard
Membre Actif

La JVM ne voit pas toujours la limite du cgroup correctement si tu n'utilises pas les bons flags de démarrage.

05/05/2026 à 01:57
margaret55
Auteur Actif
Avatar de margaret55
margaret55
Auteur Actif

J'utilise -XX:+UseContainerSupport, ça devrait suffire non ?

05/05/2026 à 17:06
rene79
Membre
Avatar de rene79
rene79
Membre

Pas forcément. Il faut aussi régler -XX:MaxRAMPercentage assez bas, genre 70% ou 75%, pour laisser de la place au métaspace et au stack.

06/05/2026 à 05:39
girard-richard
Membre Actif
Avatar de girard-richard
girard-richard
Membre Actif

Exactement. La mémoire hors-heap (off-heap) est souvent oubliée. Utilise jcmd VM.native_memory summary pour voir qui consomme quoi.

06/05/2026 à 21:13
margaret55
Auteur Actif
Avatar de margaret55
margaret55
Auteur Actif

Je viens de lancer la commande. Le Internal et le Symbol semblent énormes. C'est lié aux classes chargées ?

07/05/2026 à 15:16
lramos
Membre
Avatar de lramos
lramos
Membre

Oui, si tu as beaucoup de dépendances, le Metaspace peut devenir colossal. Essaie de limiter la taille avec -XX:MaxMetaspaceSize.

08/05/2026 à 09:42
rene79
Membre
Avatar de rene79
rene79
Membre

Et pense à désactiver UseAdaptiveGCSizePolicy si tu veux un comportement prévisible.

09/05/2026 à 09:27
margaret55
Auteur Actif
Avatar de margaret55
margaret55
Auteur Actif

Je vais tester ces paramètres. Ça semble cohérent avec les OOM que je vois.

10/05/2026 à 05:58
girard-richard
Membre Actif
Avatar de girard-richard
girard-richard
Membre Actif

Un dernier conseil : vérifie la taille des threads stack. Si tu en as des milliers, ça bouffe énormément de RAM native.

10/05/2026 à 21:54
lramos
Membre
Avatar de lramos
lramos
Membre

Si ça ne suffit pas, passe à ZGC si tu es sous Java 17+, c'est beaucoup plus performant sur les gros heaps.

11/05/2026 à 18:51
margaret55
Auteur Actif
Avatar de margaret55
margaret55
Auteur Actif

Merci à tous pour les pistes. Je vais commencer par le MaxRAMPercentage et le MaxMetaspaceSize.

12/05/2026 à 12:05

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire