Plus précisément, pourquoi cela aiderait-il à résoudre un problème PermGen OutOfMemoryError?
Aussi, des points bonus pour une réponse qui m'indique la documentation sur les arguments JVM ...
java
jvm
jvm-arguments
Geoff
la source
la source
Réponses:
L'espace permanent est l'endroit où les classes, les méthodes, les chaînes internalisées et les objets similaires utilisés par la machine virtuelle sont stockés et jamais désalloués (d'où le nom).
Cet article Oracle présente succinctement le fonctionnement et le paramétrage du GC HotSpot et vous conseille d'augmenter cet espace si vous chargez de nombreuses classes (c'est généralement le cas pour les serveurs d'applications et certains IDE comme Eclipse):
Notez que cette autre documentation Oracle répertorie les autres arguments HotSpot.
Mise à jour: à partir de Java 8, l'espace permgen et ce paramètre ont disparu. Le modèle de mémoire utilisé pour les classes et méthodes chargées est différent et n'est pas limité (avec les paramètres par défaut). Vous ne devriez plus voir cette erreur.
la source
-XX:PermSize -XX:MaxPermSize
sont utilisés pour définir la taille de la génération permanente.Génération permanente: La génération permanente est l'endroit où les fichiers de classe sont conservés. Ce sont le résultat de classes compilées et de pages JSP. Si cet espace est plein, il déclenche un garbage collection complet. Si la récupération de place complète ne peut pas nettoyer les anciennes classes non référencées et qu'il n'y a plus de place pour étendre l'espace permanent, une erreur de mémoire insuffisante (OOME) est générée et la machine virtuelle Java se bloque.
la source
Dans Java 8, ce paramètre est couramment utilisé pour imprimer un message d'avertissement comme celui-ci:
La raison pour laquelle vous obtenez ce message dans Java 8 est que Permgen a été remplacé par Metaspace pour résoudre certains des inconvénients de PermGen (comme vous avez pu le constater par vous-même, l'un de ces inconvénients est qu'il avait une taille fixe).
FYI: un article sur Metaspace: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
la source