JVM (Java Virtual Machine) je abstraktný stroj. Je to špecifikácia, ktorá poskytuje runtime prostredie, v ktorom je možné spustiť java bytecode.
JVM sú dostupné pre mnoho hardvérových a softvérových platforiem (t. j. JVM je závislé od platformy).
abeceda ako čísla
Čo je JVM
To je:
- Špecifikácia kde je špecifikované fungovanie Java Virtual Machine. Ale poskytovateľ implementácie je nezávislý na výbere algoritmu. Jeho implementáciu zabezpečila spoločnosť Oracle a ďalšie spoločnosti.
- Implementácia Jeho implementácia je známa ako JRE (Java Runtime Environment).
- Inštancia spustenia Kedykoľvek napíšete príkaz java do príkazového riadka na spustenie triedy java, vytvorí sa inštancia JVM.
Čo to robí
JVM vykonáva nasledujúcu operáciu:
- Načíta kód
- Overí kód
- Spustí kód
- Poskytuje runtime prostredie
JVM poskytuje definície pre:
ako zakázať režim vývojára v systéme Android
- Oblasť pamäte
- Formát súboru triedy
- Súprava registrácie
- Kopa vyzbieraného odpadu
- Hlásenie fatálnych chýb atď.
Architektúra JVM
Poďme pochopiť vnútornú architektúru JVM. Obsahuje classloader, pamäťovú oblasť, spúšťací mechanizmus atď.
1) Classloader
Classloader je podsystém JVM, ktorý sa používa na načítanie súborov tried. Kedykoľvek spustíme java program, najprv ho načíta classloader. V Jave sú tri vstavané classloadery.
//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()); } }Vyskúšajte to
Výkon:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Toto sú interné zavádzače tried, ktoré poskytuje Java. Ak si chcete vytvoriť vlastný classloader, musíte rozšíriť triedu ClassLoader.
2) Oblasť triedy (metódy).
Oblasť triedy (metóda) ukladá štruktúry podľa triedy, ako je napríklad oblasť konštantných oblastí za behu, údaje polí a metód, kód pre metódy.
3) Hromada
Je to dátová oblasť runtime, v ktorej sú alokované objekty.
4) Zásobník
Java Stack ukladá snímky. Obsahuje lokálne premenné a čiastkové výsledky a hrá úlohu pri vyvolaní a návrate metódy.
unordered_map c++
Každé vlákno má súkromný zásobník JVM vytvorený v rovnakom čase ako vlákno.
Pri každom vyvolaní metódy sa vytvorí nový rámec. Rám sa zničí, keď sa dokončí vyvolanie jeho metódy.
5) Register počítadiel programu
Register PC (počítadlo programov) obsahuje adresu aktuálne vykonávanej inštrukcie virtuálneho stroja Java.
java pole
6) Zásobník natívnej metódy
Obsahuje všetky natívne metódy používané v aplikácii.
7) Vykonávací motor
Obsahuje:
8) Natívne rozhranie Java
Java Native Interface (JNI) je rámec, ktorý poskytuje rozhranie na komunikáciu s inou aplikáciou napísanou v inom jazyku, ako je C, C++, Assembly atď. Java používa rámec JNI na odosielanie výstupu do konzoly alebo interakciu s knižnicami OS.