Académique Documents
Professionnel Documents
Culture Documents
ii) Linking :
La liaison consiste en 3 activités Vérifier, Préparer, Résoudre
(Verify,Prepare,Resolve) :
a) Verify
C'est le processus qui consiste à s'assurer que la représentation binaire
d'une classe est structurellement correcte ou non, c'est-à-dire qu'à
l'intérieur de la JVM, le vérificateur de byte-code vérifiera si le fichier
.class est généré par un compilateur valide ou non. , si le fichier .class est
correctement formaté ou non. C'est l'une des raisons pour lesquelles Java
est un langage sécurisé. Si la vérification échoue, nous obtiendrons une
exception d'exécution indiquant java.lang.VerifyError.
b) Prepare
il s'agit d'un processus d'attribution de la mémoire pour les variables
statiques au niveau de la classe ou au niveau de l'interface et
d'attribution des valeurs par défaut
c) Resolve <-----Prob
C'est le processus de remplacement des références/noms de mémoire
symboliques dans notre programme par les références de mémoire
d'origine de Method area.
iii) Initialization :
Dans ce cas, toutes les variables statiques sont affectées avec des valeurs
d'origine et les blocs statiques seront exécutés du parent vers l'enfant et de
haut en bas.
B- Memory Area :
La division de la zone mémoire totale de la JVM est en 5 parties :
i) Method Area
La zone de méthode est également appelée zone de classe. La zone de
méthode stocke les données de chaque classe, telles que les champs, les
pools de constantes et les données et informations de méthode. Toutes les
données au niveau de la classe seront stockées ici, y compris les variables
statiques. Il n'y a qu'une seule zone de méthode par JVM et c'est une
ressource partagée (La zone de méthode est accessible par plusieurs
threads simultanément)
ii) Heap Area
Pour chaque JVM, une zone de tas est disponible. La zone de tas sera créée
au démarrage de la JVM. Les objets et les variables d'instance
correspondantes seront stockés dans la zone de tas. La zone Heap est
accessible par plusieurs threads, par conséquent, les données stockées dans
la mémoire de tas ne sont pas thread-safe.
C- Execution Engine :
C'est le composant central de JVM et il est responsable de l'exécution des fichiers
de classe Java. Il contient principalement trois composants :
i) Interpreter
Le travail de ce composant est de lire et de convertir le bytecode en
code lisible par machine et d'exécuter chaque instruction une par
une. Par conséquent, cela peut interpréter rapidement la ligne de
bytecode mais prend beaucoup de temps pour l'exécuter.
L'inconvénient de l'interpréteur est qu'il interprète à chaque fois,
même si la même méthode est invoquée plusieurs fois, ce qui réduit les
performances du système.
ii) JIT Compiler
iii) Garbage Collector