J'utilise la version finale de wildfly 10.0.0. Je reçois Java.lang.OutOfMemoryError: GC overhead limit exceeded error
chaque fois que je annule/déploie des modules 9 à 10 fois, l'utilisation de la mémoire de wildfly continue d'augmenter lentement et ne diminue jamais et cela donne encore Java.lang.OutOfMemoryError: GC overhead limit exceeded error.
Wildfly ne libère pas la mémoire après le non-déploiement de l'application et continue d'augmenter au fur et à mesure du déploiement, ce qui entraîne une surcharge du GC
Plus tôt, lorsque j'utilisais la version Wildfly 9, cela n'a pas posé ce problème.
J'ai essayé le correctif indiqué dans le lien ci-dessous en remplaçant les modules core, servlet et websocket par la dernière version mais cela n'a pas fonctionné pour moi.
https://developer.jboss.org/message/959286
Quelqu'un peut-il me dire comment résoudre ce problème?.
Vous devez augmenter votre mémoire de tas. Pour ça
Éditer bin/standalone.conf
fichier de configuration, recherchez la première occurrence de Java_OPTS
.
Modifiez ensuite le -Xmx
option selon vos besoins.
Changement:
Java_OPTS=”-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true”
À:
Java_OPTS=”-Xms64m -Xmx2G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=2G -Djava.net.preferIPv4Stack=true”
WildFly 10 - Java.lang.OutOfMemoryError: espace de métadonnées
pour WildFly 10.0.0.Final "Java.lang.OutOfMemoryError: Metaspace" se produit
pour WildFly 10.1.0-SNAPSHOT (correction pour WFLY-6347 fusionné) aucune erreur de MOO ne se produit (la métaspace est une récupération de place)
Après avoir examiné le vidage de tas, j'ai identifié le org.jboss.el.cache.BeanPropertiesCache
comme cause première. Dans ce cas, il conserve une référence dure au person.joey.test.TestClientBean
class, bloquant ainsi efficacement le ModuleClassLoader pertinent du GC.
Les valeurs d'énumération sont traitées de la même manière que les constantes statiques - c'est-à-dire qu'elles ne sont pas récupérées à moins que le chargeur de classe de la classe propriétaire ne le soit.
C'est pourquoi person.joey.test.RequestType
les valeurs restent en mémoire. OmniFaces amplifie uniquement l'impact - comme mentionné ci-dessus, il contient une référence à un BeanManager.