web-dev-qa-db-fra.com

Disposition de la mémoire JDK 8 et récupération de place

D'après ce que je sais , à partir de JDK 8, le PermGen sera une page passée de l'histoire de Java. Tout est agréable et joyeux ... mais à quoi ressemblera la nouvelle disposition de la mémoire? Cela affectera-t-il GC sur la nouvelle plateforme?

30
Olimpiu POP

PermGen est remplacé par Metaspace dans Oracle/Sun JDK8, qui est très similaire. La principale différence est que Metaspace peut s'étendre au moment de l'exécution.

38
Adam Dyga

C'est quand permGen est là enter image description here

Après l'introduction de Metaspace enter image description here

Certainement, il y a beaucoup d'améliorations dans GC dans Java 8. Vous pouvez vérifier cela stackoverflow post

Dans Metaspace, plusieurs espaces de mémoire virtuelle mappés sont alloués pour les métadonnées et l'allocation (en morceaux) est par chargeur de classe en fonction du type de chargeur de classe et de sa vivacité. Les morceaux sont retournés à la liste des morceaux libres et les espaces de mémoire virtuelle sont retournés lorsqu'ils sont vidés.

L'avantage de GC serait

  • Pendant la collecte complète, les métadonnées vers les pointeurs de métadonnées ne sont pas analysées
  • Un grand nombre de code complexe (en particulier pour CMS) pour l'analyse des métadonnées a été supprimé.
  • Metaspace contient quelques pointeurs dans le Java tas.
  • Aucun coût de compactage pour les métadonnées
  • Réduit l'analyse racine (pas d'analyse de VM dictionnaire des classes chargées et autres tables de hachage internes).

Plus de détails ici

23
pardeep131085