Le mécanisme de chargement de classe comprend trois étapes : chargement, liaison et initialisation. Chargement : lisez les données binaires du fichier de classe en mémoire et créez un objet de description de bytecode. Liaison : valide, prépare et analyse les objets de description de bytecode et les associe à d'autres classes. Initialisation : exécutez le programme d'initialisation statique, attribuez des variables statiques et établissez des relations d'héritage. Lorsque la classe n'est plus référencée, la JVM effectue une analyse d'accessibilité pour marquer la classe comme recyclable, et le garbage collector récupère la mémoire de la classe marquée, mais les variables statiques restent en mémoire.
Avant-propos
Comprendre le mécanisme de chargement des classes de la machine virtuelle Java (JVM) est crucial pour maîtriser le développement Java. Cet article examinera en profondeur la façon dont la JVM charge, lie et décharge les classes et illustre ce mécanisme à travers des exemples pratiques.
Processus de chargement de classe
Le processus de chargement de classe comprend les trois étapes suivantes :
Processus de déchargement de classe
Lorsqu'une classe n'est plus référencée, la JVM effectuera les étapes suivantes pour la décharger :
Cas pratique
Exemple de code :
public class MyClass { private static int staticVar = 10; private int instanceVar = 20; public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println(staticVar); // 输出 10 System.out.println(obj.instanceVar); // 输出 20 } }
Analyse de chargement de classe :
MyClass
est instancié, son fichier de classe est chargé en mémoire et créer un objet de description de bytecode.MyClass
被实例化时,它的 class 文件被加载到内存,创建字节码描述对象。System
类。staticVar
被赋值为 10,类与其子类建立继承关系。类卸载分析:
当obj
变量超出作用域并被垃圾回收后:
MyClass
对象被标记为可回收,因为 artık不再引用。MyClass
对象的内存空间。staticVar
System
. Initialisation : La variable statique
staticVar
se voit attribuer une valeur de 10 et la classe établit une relation d'héritage avec ses sous-classes. Analyse de déchargement de classe : Lorsque la variable
obj
sort de la portée et est récupérée : marqué comme recyclable : L'objet
MyClass
est Marqué comme recyclable car artık n'est plus référencé. Garbage collection : Le garbage collector récupère l'espace mémoire de l'objet
MyClass
. Rétention des variables statiques : Même si la classe a été déchargée, la variable statique
staticVar
reste toujours en mémoire car elle est maintenue par le chargeur de classe.
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!