Maison >Java >javaDidacticiel >Pourquoi PermGen a-t-il été éliminé dans JDK 8 ?

Pourquoi PermGen a-t-il été éliminé dans JDK 8 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 22:35:02684parcourir

Why Was PermGen Eliminated in JDK 8?

Élimination de PermGen dans JDK 8 : comprendre les raisons

Dans Java Development Kit (JDK) 8, le concept de PermGen (génération permanente) a été supprimé. Lors de l'exécution d'Eclipse dans cette version, les utilisateurs peuvent rencontrer un message d'avertissement indiquant que l'option MaxPermSize est ignorée. Cette suppression était due à plusieurs inconvénients associés à PermGen, notamment :

  • Taille fixe au démarrage, ce qui rend difficile l'ajustement dynamique.
  • Types de points d'accès internes en tant qu'objets Java, ce qui entraîne des complexités. et inefficacités.
  • Besoin d'itérateurs et de métadonnées spéciaux lors d'une vidange complète collections.
  • Limitations dans la désallocation des données de classe simultanément et en dehors des pauses GC.
  • Obstacle aux optimisations futures qui dépendaient de la suppression de PermGen.

Pour résoudre ces problèmes, le Le concept Metaspace a été introduit pour remplacer PermGen. Metaspace offre les avantages suivants :

  • S'aligne sur la propriété de la spécification du langage Java consistant à faire correspondre la durée de vie des classes aux chargeurs de classes.
  • Utilise une allocation linéaire et élimine la récupération individuelle, sauf dans des scénarios spécifiques.
  • Réduit les frais de collecte des ordures et améliore les performances.

Le métaespace peut être réglé à l'aide des indicateurs -XX:MaxMetaspaceSize et -XX:MetaspaceSize, permettant aux administrateurs de définir la taille initiale et la limite maximale. Par défaut, Metaspace a une taille illimitée, ce qui lui permet de s'ajuster dynamiquement en fonction des demandes de l'application au moment de l'exécution.

La suppression de PermGen et l'introduction de Metaspace ont permis d'autres optimisations et fonctionnalités dans JDK 8 et au-delà, telles que partage de données de classe d'application, améliorations des jeunes collections et réduction de la taille des métadonnées, conduisant finalement à une amélioration des performances du GC et de l'efficacité globale.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn