Maison > Java > javaDidacticiel > Où les méthodes et variables statiques de Java sont-elles stockées en mémoire ?

Où les méthodes et variables statiques de Java sont-elles stockées en mémoire ?

Mary-Kate Olsen
Libérer: 2024-12-03 16:39:11
original
942 Les gens l'ont consulté

Where are Java's Static Methods and Variables Stored in Memory?

Où sont stockées les méthodes et variables statiques en Java ?

Les méthodes et variables statiques jouent un rôle crucial dans la programmation orientée objet en fournissant une identité partagée dans toutes les instances de une classe. Contrairement aux variables d'instance, les variables statiques n'existent qu'une seule fois par classe, quel que soit le nombre d'objets créés. De même, les méthodes statiques sont des méthodes au niveau de la classe accessibles directement depuis la classe elle-même, sans nécessiter la création d'une instance de la classe.

Allocation de mémoire

Alors, où sont les méthodes statiques et les variables stockées en Java ? La réponse réside dans le concept de Génération Permanente (PermGen) ou MetaSpace. Dans les anciennes versions de Java (avant Java 8), PermGen faisait partie de la mémoire tas dédiée au stockage des métadonnées liées aux classes, y compris les variables statiques et le code de méthode. Cependant, depuis Java 8, PermGen a été remplacé par Metaspace, qui sert le même objectif.

Variables statiques

Les variables statiques sont simplement stockées dans la section PermGen ou MetaSpace du tas. Chaque variable statique occupe une adresse mémoire spécifique où sa valeur est stockée.

Méthodes statiques

Les méthodes statiques sont stockées dans le cadre des données de classe dans la région PermGen ou MetaSpace . Le code de la méthode et les métadonnées associées, telles que les types d'arguments et le type de retour, sont compilés en bytecode et placés dans cette zone mémoire dédiée.

Exemple

Considérez le code Java suivant :

class A {
    static int i = 0;
    static int j;

    static void method() {
        // static k = 0; // This won't compile
    }
}
Copier après la connexion

Dans cet exemple, les variables statiques i et j seront stockées dans la région PermGen ou MetaSpace du tas. La méthode statique method() sera également stockée dans la même zone mémoire dans le cadre des métadonnées de la classe.

Implications pour le Garbage Collection

Les variables et méthodes statiques existent de manière persistante quel que soit le cycle de vie de l'individu. objets de la classe. Ils ne sont pas éligibles au garbage collection à moins que la classe entière elle-même ne soit déchargée de la mémoire. Cela signifie qu'ils peuvent potentiellement rester en mémoire indéfiniment, même si la classe n'est plus utilisée par aucun objet actif.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal