[Java Error] java.lang.OutOfMemoryError : GC overhead limit exceeded
Bonjour,
je travaille sous Talend Integration Service (un ETL qui génère du code Java).
Je suis coincé avec une erreur sur le serveur, en effet lors de l'exécution le système retourne l'erreur :
Exception in thread "Thread-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
Sur un site internet, j'ai trouvé quelques éléments de réponse mais qui ne me satisfont pas.
Le problème viendrait du temps trop important que le ramasse-miettes passe à gérer la mémoire. Cette erreur empêche les applications de s'éterniser, en passant la plus grande partie de leur temps à gérer la mémoire plutôt qu'à progresser dans leur exécution.
La solution proposée consiste à désactiver le mécanisme générant cette erreur, en ajoutant le paramètre -XX:-UseGCOverheadLimit.
J'ai appliqué cette modification et j'observe, que l'erreur a disparu, mais aussi que notre programme ne se termine jamais et accapare une grande partie de la mémoire et de la charge processeur du serveur.
Je suppose que le programme, comme expliqué ci-dessus, ne progresse pas ou peu dans son exécution, la puissance de calcul et la mémoire étant allouées à la gestion de mémoire.
Pourriez-vous m'aider à résoudre ce problème ou exprimer votre avis sur la question.
Je vous remercie de votre attention,
Adrien.