JVM (Java Virtual Machine) és una màquina abstracta. És una especificació que proporciona un entorn d'execució en el qual es pot executar bytecode Java.
Les JVM estan disponibles per a moltes plataformes de maquinari i programari (és a dir, JVM depèn de la plataforma).
Què és JVM
És:
- Una especificació on s'especifica el funcionament de la màquina virtual Java. Però el proveïdor d'implementació és independent per triar l'algorisme. La seva implementació ha estat proporcionada per Oracle i altres empreses.
- Una implementació La seva implementació es coneix com JRE (Java Runtime Environment).
- Instància d'execució Sempre que escriviu l'ordre java a l'indicador d'ordres per executar la classe java, es crea una instància de JVM.
Què fa
La JVM realitza l'operació següent:
- Codi de càrrega
- Verifica el codi
- Executa codi
- Proporciona un entorn d'execució
JVM proporciona definicions per a:
- Àrea de memòria
- Format de fitxer de classe
- Registre establert
- Munt recollit d'escombraries
- Informe d'errors fatals, etc.
Arquitectura JVM
Entenem l'arquitectura interna de JVM. Conté carregador de classes, àrea de memòria, motor d'execució, etc.
java xor
1) Classloader
Classloader és un subsistema de JVM que s'utilitza per carregar fitxers de classe. Sempre que executem el programa java, el carregador de classes el carrega primer. Hi ha tres carregadors de classes integrats a 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()); } }Prova-ho ara
Sortida:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Aquests són els carregadors de classes interns proporcionats per Java. Si voleu crear el vostre propi carregador de classes, heu d'ampliar la classe ClassLoader.
2) Àrea de classe (Mètode).
L'àrea Class(Mètode) emmagatzema estructures per classe, com ara l'agrupació constant de temps d'execució, dades de camp i mètode, el codi dels mètodes.
3) Munt
És l'àrea de dades de temps d'execució on s'assignen els objectes.
sistemes operatius mac
4) Pila
Java Stack emmagatzema marcs. Conté variables locals i resultats parcials, i té un paper en la invocació i el retorn del mètode.
Cada fil té una pila JVM privada, creada al mateix temps que el fil.
Es crea un marc nou cada vegada que s'invoca un mètode. Un marc es destrueix quan es completa la invocació del seu mètode.
np.clip
5) Registre de comptadors del programa
El registre de PC (comptador de programes) conté l'adreça de la instrucció de la màquina virtual Java que s'està executant actualment.
6) Pila de mètodes natius
Conté tots els mètodes natius utilitzats en l'aplicació.
7) Motor d'execució
Conté:
8) Interfície nativa de Java
Java Native Interface (JNI) és un marc que proporciona una interfície per comunicar-se amb una altra aplicació escrita en un altre llenguatge com C, C++, Assembly, etc. Java utilitza el marc JNI per enviar resultats a la consola o interactuar amb les biblioteques del sistema operatiu.