JVM (Java Virtual Machine) est une machine abstraite. Il s'agit d'une spécification qui fournit un environnement d'exécution dans lequel le bytecode Java peut être exécuté.
Les JVM sont disponibles pour de nombreuses plates-formes matérielles et logicielles (c'est-à-dire que la JVM dépend de la plate-forme).
Java pour la boucle
Qu'est-ce que la JVM
C'est:
- Un cahier des charges où le fonctionnement de la machine virtuelle Java est spécifié. Mais le fournisseur d’implémentation est indépendant dans le choix de l’algorithme. Sa mise en œuvre a été assurée par Oracle et d'autres sociétés.
- Une mise en œuvre Son implémentation est connue sous le nom de JRE (Java Runtime Environment).
- Instance d'exécution Chaque fois que vous écrivez une commande Java sur l'invite de commande pour exécuter la classe Java, une instance de JVM est créée.
Ce qu'il fait
La JVM effectue l'opération suivante :
- Code des charges
- Vérifie le code
- Exécute le code
- Fournit un environnement d'exécution
JVM fournit des définitions pour :
comment refaire dans Photoshop
- Zone mémoire
- Format de fichier de classe
- Ensemble de registres
- Tas de déchets collectés
- Rapport d'erreur fatale, etc.
Architecture JVM
Comprenons l'architecture interne de JVM. Il contient un chargeur de classe, une zone mémoire, un moteur d'exécution, etc.
1) Chargeur de classe
Classloader est un sous-système de JVM utilisé pour charger des fichiers de classe. Chaque fois que nous exécutons le programme Java, il est chargé en premier par le chargeur de classe. Il existe trois chargeurs de classes intégrés en Java.
//Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } }Testez-le maintenant
Sortir:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Ce sont les chargeurs de classes internes fournis par Java. Si vous souhaitez créer votre propre chargeur de classe, vous devez étendre la classe ClassLoader.
2) Zone de classe (méthode)
La zone Classe (Méthode) stocke les structures par classe telles que le pool de constantes d'exécution, les données de champ et de méthode, le code des méthodes.
3) Tas
Il s'agit de la zone de données d'exécution dans laquelle les objets sont alloués.
4) Pile
Java Stack stocke les images. Il contient des variables locales et des résultats partiels, et joue un rôle dans l'invocation et le retour de méthodes.
texte souligné en CSS
Chaque thread possède une pile JVM privée, créée en même temps que le thread.
Un nouveau frame est créé à chaque fois qu'une méthode est invoquée. Une trame est détruite une fois l’invocation de sa méthode terminée.
5) Registre du compteur de programme
Le registre PC (compteur de programme) contient l'adresse de l'instruction de la machine virtuelle Java en cours d'exécution.
pseudo seulement
6) Pile de méthodes natives
Il contient toutes les méthodes natives utilisées dans l'application.
7) Moteur d'exécution
Il contient:
8) Interface native Java
Java Native Interface (JNI) est un framework qui fournit une interface pour communiquer avec une autre application écrite dans un autre langage comme C, C++, Assembly, etc. Java utilise le framework JNI pour envoyer la sortie à la console ou interagir avec les bibliothèques du système d'exploitation.