JVM (Java Virtual Machine) este o mașină abstractă. Este o specificație care oferă un mediu de rulare în care poate fi executat bytecode java.
JVM-urile sunt disponibile pentru multe platforme hardware și software (adică JVM depinde de platformă).
Ce este JVM
Este:
imprimare model stea
- O specificație unde este specificată funcționarea mașinii virtuale Java. Dar furnizorul de implementare este independent pentru a alege algoritmul. Implementarea sa a fost asigurată de Oracle și alte companii.
- O implementare Implementarea sa este cunoscută ca JRE (Java Runtime Environment).
- Instanță de rulare Ori de câte ori scrieți comanda java pe promptul de comandă pentru a rula clasa java, este creată o instanță a JVM.
Ce face
JVM-ul efectuează următoarea operație:
- Încarcă codul
- Verifică codul
- Execută cod
- Oferă mediu de rulare
JVM oferă definiții pentru:
- Zona de memorie
- Format de fișier de clasă
- Registru setat
- Morman adunat cu gunoi
- Raportarea erorilor fatale etc.
Arhitectura JVM
Să înțelegem arhitectura internă a JVM. Conține classloader, zonă de memorie, motor de execuție etc.
1) Classloader
Classloader este un subsistem JVM care este folosit pentru a încărca fișiere de clasă. Ori de câte ori rulăm programul java, acesta este încărcat mai întâi de classloader. Există trei classloadere încorporate în 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()); } }Testează-l acum
Ieșire:
cum să recuperezi aplicațiile ascunse
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Acestea sunt încărcătoarele interne de clasă furnizate de Java. Dacă doriți să vă creați propriul classloader, trebuie să extindeți clasa ClassLoader.
2) Zona de clasă (metodă).
Clasă (Metodă) Aria stochează structuri pe clasă, cum ar fi pool-ul de constante de rulare, câmpul și datele metodei, codul pentru metode.
1 la 100 roman nr
3) grămada
Este zona de date de rulare în care sunt alocate obiectele.
4) Stiva
Java Stack stochează cadre. Acesta conține variabile locale și rezultate parțiale și joacă un rol în invocarea și returnarea metodei.
Fiecare thread are o stivă JVM privată, creată în același timp cu firul.
Un nou cadru este creat de fiecare dată când este invocată o metodă. Un cadru este distrus când se încheie invocarea metodei sale.
5) Program Counter Register
Registrul PC (contor de programe) conține adresa instrucțiunii mașinii virtuale Java în curs de executare.
6) Stiva de metode native
Conține toate metodele native utilizate în aplicație.
ce este o stivă java
7) Motor de execuție
Contine:
8) Interfață nativă Java
Java Native Interface (JNI) este un cadru care oferă o interfață pentru a comunica cu o altă aplicație scrisă într-un alt limbaj, cum ar fi C, C++, Assembly etc. Java folosește cadrul JNI pentru a trimite rezultate către Consolă sau pentru a interacționa cu bibliotecile OS.