Les chargeurs de classe ou la classe peuvent-ils être morts dans JVM ? Je lisais un blog Oracle - Collecte des ordures et métaespace. L'auteur a écrit que le ramasse-miettes est induit sur le méta-espace lorsque la taille maximale est atteinte, en conséquence les chargeurs de classe morts et les classes sont ramassés.

Je voulais comprendre que les objets devenus inaccessibles peuvent également être appliqués aux chargeurs de classes et aux classes ? Si oui comment.

-1
Akshay Naik 23 janv. 2020 à 08:46

1 réponse

Meilleure réponse

Je voulais comprendre que les objets devenus inaccessibles peuvent également être appliqués aux chargeurs de classes et aux classes ?

Oui, les classloaders et les classes peuvent devenir inaccessibles dans certaines circonstances.

  • Cela s'applique uniquement aux chargeurs de classe créés dynamiquement et aux classes qu'ils chargent. Le bootstrap initial et le chargeur de classe d'application sont accessibles en permanence, et toutes les classes qu'ils chargent (define) seront accessibles en permanence.

  • Il existe de nombreux chemins d'accessibilité, y compris

    • d'une classe à son chargeur de classe parent
    • d'un chargeur de classe à chaque classe qu'il a chargée
    • d'une classe à chaque classe dont elle dépend
    • de chaque objet à sa classe, et
    • de chaque appel de méthode sur une pile de threads à la classe qui définit la méthode.

En bref, s'il existe un moyen pour une application de trouver ou d'utiliser une classe (chargée) ou un chargeur de classe, il est accessible. Sinon, il nous est inaccessible.

Si oui comment.

En se débarrassant de tous les chemins qui rendent le classloader et ses classes accessibles. Comme si vous fabriquiez un objet ordinaire.

(Sauf que c'est plus difficile à réaliser car de nombreux chemins d'accessibilité sont en arrière-plan et le code de l'application ne peut pas les casser directement. D'où le problème que les applications qui utilisent intensivement le chargement de classe dynamique, les proxys dynamiques et autres peuvent< /em> souffrent de fuites de métaespace.)

4
Stephen C 23 janv. 2020 à 09:22