Tout d'abord, parlons du modèle de mémoire JVM :
La mémoire JVM est divisée en : zone de méthode, tas, pile et compteur de programme.
Parlons brièvement de la zone de méthode, de la pile et du tas :
Zone de méthode : c'est une zone partagée par chaque thread, stockant les informations de classe/constantes/variables statiques ;
Pile : En fait, chaque thread se verra attribuer une pile, et son cycle de vie est le même que celui du thread Lors de l'exécution d'une méthode, un frame de pile sera généré. Le cadre de pile contient les variables locales de la méthode. Tas : toutes les instanciations de classe sont stockées dans le tas. (Tutoriel vidéo recommandé :Tutoriel vidéo Java )
Analysez la différence entre statique et non statique du point de vue de la mémoire
Static modifie les variables membres et les méthodes membres. L'adresse où leurs valeurs sont stockées est le pool de constantes dans la zone des méthodes. L'ordre d'exécution est de stocker les noms de variables ou de méthodes modifiés statiquement dans le pool de constantes. charger la classe. Les variables modifiées de manière non statique peuvent être des variables membres et des variables locales. La variable membre est la même que l'adresse où l'objet est stocké, car elle fait partie de la classe et son adresse est dans le tas. Les variables locales sont généralement déclarées dans les méthodes, et leurs adresses stockées sont sur la pile.2. Analyse à partir du mécanisme en cours d'exécution
Lorsque le code source est compilé dans un fichier de bytecode .class par le compilateur, une fois la classe chargée, elle est modifiée avec static Les blocs/variables/méthodes seront immédiatement stockés dans la zone de méthode. En même temps, les blocs/variables/méthodes non statiques n'ont pas encore été compilés. Une fois les variables non statiques stockées dans les méthodes statiques, le compteur du programme indiquera les variables locales. Une erreur sera signalée car les variables locales n'ont pas été compilées à ce moment. Tutoriel recommandé :Programme d'introduction à Java
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!