Comment Corriger l'erreur java.lang.OutOfMemoryError?

Bonjour,

J’ai eu ce message d’erreur lorsque j’exécute mon programme Java :

java.lang.OutOfMemoryError: GC overhead limit exceeded

Que signifie GC overhead limit exceeded ? Comment puis-je résoudre ce problème ?

Ce message signifie que, pour une raison quelconque, le garbage collector prend un temps excessif (par défaut 98% du temps CPU du processus) et récupère très peu de mémoire à chaque exécution (par défaut 2% du tas).

Cela signifie que votre programme ne progresse plus et qu’il ne s’occupe plus que du garbage collector tout le temps.

Pour éviter que votre application ne monopolise le temps CPU sans rien faire, la JVM lance cette erreur pour que vous ayez une chance de diagnostiquer le problème.

Les rares cas où j’ai vu cela se produire sont ceux où un code créait des tonnes d’objets temporaires et des tonnes d’objets faiblement référencés dans un environnement déjà très limité en mémoire.

Il suffit d’augmenter un peu la taille du tas en définissant cette option dans .

Run → Run Configurations → Arguments → VM arguments

-Xms1024M -Xmx2048M

Xms - pour la limite minimale

Xmx - pour la limite maximale

À quel outil correspond cette réponse ?

C’est Eclipse. Si vous utilisez Android, essayer la configuration suivant:

Ouvrez le fichier build.gradle et ajouter:

  android {
        dexOptions {
           javaMaxHeapSize = "4g"
        }
   }

Pour moi, les étapes suivantes ont fonctionné :

  1. Ouvrez le fichier eclipse.ini
  2. Changez :
-Xms40m
-Xmx512m

à

-Xms512m
-Xmx1024m
  1. Redémarrer Eclipse