Disposition de la mémoire JDK 8 et collecte des ordures


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

Author: Joachim Sauer, 2013-12-13

2 answers

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

 35
Author: Adam Dyga, 2013-12-13 09:40:49

C'est quand PermGen est là entrez la description de l'image ici

Après l'introduction du métaspace entrez la description de l'image ici

Définitivement, il y a beaucoup d'amélioration dans GC en Java 8. Vous pouvez vérifier ceci stackoverflow post

Dans Metaspace, plusieurs espaces de mémoire virtuelle mappés sont alloués aux métadonnées et l'allocation ( en morceaux) est par chargeur de classe en fonction du type de chargeur de classe et de sa durée de vie . Les morceaux sont renvoyés à la liste des morceaux libres et également aux espaces de mémoire virtuelle retournés lorsque vide.

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
  • Beaucoup de code complexe (en particulier pour CMS) pour l'analyse des métadonnées a été supprimé.
  • Metaspace contient peu de pointeurs dans le tas Java.
  • Aucun coût de compactage pour les métadonnées
  • Réduit l'analyse racine (pas d'analyse du dictionnaire VM des classes chargées et d'autres tables de hachage internes).

Plus de détails est ici

 22
Author: pardeep131085, 2017-05-23 11:54:56