Suppression de PermGen dans JDK 8 : pourquoi l'option VM est ignorée
Introduction
JDK 8 apporté des changements importants dans l'architecture de la machine virtuelle Java (JVM), notamment l'élimination de la génération permanente (PermGen). Ce changement a affecté la façon dont Eclipse et d'autres applications interagissent avec la JVM.
Problème
Lors de l'exécution d'Eclipse dans JDK 8, les utilisateurs peuvent rencontrer un message d'avertissement indiquant que le paramètre MaxPermSize L'option VM est ignorée. Ce message soulève des questions sur les raisons de la suppression de ce paramètre.
Raisons pour ignorer MaxPermSize
Les raisons pour ignorer l'option MaxPermSize VM proviennent de plusieurs inconvénients associés à PermGen dans versions précédentes du JDK :
-
Taille fixe : PermGen avait une taille fixe au démarrage, ce qui rendait difficile l'optimisation de l'allocation de mémoire pour les applications ayant des besoins de chargement de classe dynamique.
-
Types de points d'accès internes :Les objets stockés dans PermGen étaient des objets Java, entraînant des fuites de mémoire potentielles en raison de leur persistance dans les garbage collection.
-
Collections simplifiées : Suppression de PermGen autorisée pour la simplification des cycles complets de garbage collection, supprimant le besoin d'itérateurs spéciaux pour les métadonnées.
-
Désallocation simultanée de données de classe : MetaSpace permet la désallocation simultanée de données de classe en dehors des pauses GC, améliorant ainsi les performances .
-
Améliorations futures : L'élimination de PermGen ouvre la voie à de futures améliorations et optimisations de la JVM qui étaient auparavant limitées par ses contraintes.
Métaespace : Le remplacement
Dans JDK 8, PermGen a été remplacé par Metaspace, qui offre plusieurs avantages :
-
Affinité du chargeur de classe : Metaspace est associé à chargeurs de classes spécifiques, garantissant que la durée de vie des classes correspond au cycle de vie du chargeur correspondant.
-
Allocation linéaire : Metaspace utilise l'allocation linéaire, simplifiant la gestion de la mémoire.
-
Non Récupération individuelle : Metaspace n'effectue pas de récupération individuelle, sauf en cas de redéfinition de classe et d'échecs de chargement, ce qui réduit encore davantage la surcharge.
-
Aucune analyse GC ni compactage : Les objets Metaspace ne sont ni analysés ni compactés. pendant les cycles de récupération de place, améliorant ainsi les performances.
-
Réglage optimisé : Le métaespace peut être réglé à l'aide des indicateurs -XX:MaxMetaspaceSize et -XX:MetaspaceSize, permettant une gestion plus flexible de la mémoire.
Conclusion
La suppression de PermGen dans JDK 8 apporte des avantages significatifs en termes de performances et de stabilité aux applications Java. Bien que l'option MaxPermSize VM ne soit plus pertinente, Metaspace fournit une solution hautement optimisée et efficace pour gérer les métadonnées des applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!