Maison  >  Article  >  Java  >  Explication détaillée de l'architecture JVM avec images et textes

Explication détaillée de l'architecture JVM avec images et textes

高洛峰
高洛峰original
2017-03-12 09:59:281459parcourir

Cet article explique l'architecture JVM en détail avec des images et du texte

JVM est un ordinateur abstrait basé sur la pilearchitecture Il possède son propre jeu d'instructions et sa propre gestion de la mémoire, et est. une multiplateforme Java Sur cette base, la JVM interprète et exécute le bytecode, ou compile le bytecode en code local pour exécution. L'architecture de la machine virtuelle Java est la suivante :

Explication détaillée de larchitecture JVM avec images et textes

Class File

Class File est une plateforme- fichier binaire indépendant, contient du bytecode qui peut être exécuté par la JVM, dans lequel les multi-octets sont dans l'ordre big-endian et les caractères utilisent un codage UTF-8 amélioré. Le fichier Class décrit avec précision les informations d'une classe ou d'une interface, notamment :

Chargeur de classe

Chargeur de classe, JVM est dynamique lorsque la classe est utilisée pour la première fois le chargement, la liaison et l'initialisation. Le modèle de chargement par défaut de la JVM est un modèle de délégation parent. Il existe une hiérarchie de relations parent-enfant entre les chargeurs de classe et est implémenté en interne à l'aide de la composition. De plus, il existe d'autres méthodes de chargement, telles que le chargement de Servlet. Il essaie d'abord de se charger lui-même, puis délègue au chargeur supérieur s'il échoue l'isolation de classe entre les chargeurs OSGI ; , et il n'y a pas de distinction entre les niveaux supérieur et inférieur.

Chargement

Le chargement consiste à prendre la classe ou l'interface représentée par le fichier Class et à créer un objet java.lang.Class correspondant dans la zone de méthode JVM , comme Class.forName(), ClassLoader.loadClass() et la réflexion peuvent déclencher le chargement de la classe. Lorsqu'un chargement de classe est déclenché, le processus détaillé est le suivant :

  • Vérifier si la classe a été chargée

  • Déléguer la demande de chargement à la classe supérieure chargeant

  • Essayez de rechercher la classe et chargez-la

Lorsque ClassLoader ne trouve pas la classe dans le chemin de classe, il lancera ClassNotFoundException; Lorsque la classe A fait référence à la classe B, la classe A a été chargée avec succès, mais le fichier de classe n'est pas trouvé lors du chargement de B, une NoClassDefFoundError sera levée. JVM possède les chargeurs de classes suivants :

Liens

Initialisation

classe d'exécution La méthode d'initialisation, c'est-à-dire l'attribution de champs statiques et l'exécution de blocs statiques, est dans l'ordre de ses

définitions et s. Les champs statiques de la classe parent seront initialisés avant les champs statiques de la classe enfant. À ce stade, une classe ou une interface est chargée en mémoire et la JVM garantira que l'ensemble du processus est thread-safe
. Il convient de noter que l’ensemble du processus n’implique aucun objet instance.

Zone de données d'exécution

Le moteur d'exécution

lit, traduit et exécute le bytecode. La JVM est basée sur une architecture de pile. Cette pile est la pile d'opérandes, et les instructions de bytecode effectuent diverses opérations à travers elle. Il existe également des machines virtuelles basées sur des registres.

  • Interprète, traduction : L'interprétation du bytecode est plus rapide mais l'exécution est lente. L'inconvénient est que chaque appel de méthode doit être retraduit et interprété.

  • Compilateur JIT, compilation juste à temps : découvrez les méthodes de hotspot fréquemment appelées dans le programme, compilez le bytecode en code local et améliorez les performances.

  • Garbage Collector : recycle les objets non valides, détermine si l'objet est recyclable et peut utiliser différents algorithmes de garbage collection.

Interface et bibliothèque de méthodes locales

JNI, appelant des méthodes locales, bibliothèque c/c requise par le moteur d'exécution.

Résumé

Les implémentations JVM grand public incluent la JVM Hotspot d'Oracle, JRockit et la JVM d'IBM. En ce qui concerne le réglage de la JVM, il fait référence par défaut à Hotspot VM, ce qui montre sa popularité. De nos jours, il est un peu difficile de se lancer dans Java sans comprendre la JVM -v-.
Pour écrire du code de haute qualité, vous devez non seulement comprendre la JVM, mais également avoir des connaissances informatiques de base complètes telles que le réglage et le dépannage. En fait, quel que soit le langage que vous utilisez pour le développement, il s'agit d'un processus de construction. et améliorer votre propre système de connaissances informatiques.

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!

Déclaration:
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