logo

Architektúra JVM (Java Virtual Machine).

  1. Java Virtual Machine
  2. Vnútorná architektúra JVM

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:

  1. Š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.
  2. Implementácia Jeho implementácia je známa ako JRE (Java Runtime Environment).
  3. 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ď.

Architektúra JVM

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.

    Bootstrap ClassLoader: Toto je prvý classloader, ktorý je super triedou Extension classloader. Načítava to rt.jar súbor, ktorý obsahuje všetky súbory tried Java Standard Edition, ako sú triedy balíkov java.lang, triedy balíkov java.net, triedy balíkov java.util, triedy balíkov java.io, triedy balíkov java.sql atď.Rozšírenie ClassLoader: Toto je podriadený classloader Bootstrapu a rodičovský classloader System classloader. Načítava súbory jar umiestnené vo vnútri $JAVA_HOME/jre/lib/ext adresár.System/Application ClassLoader: Toto je podriadený classloader rozšírenia classloader. Načíta triedne súbory z classpath. V predvolenom nastavení je classpath nastavená na aktuálny adresár. Cestu triedy môžete zmeniť pomocou prepínača „-cp“ alebo „-classpath“. Je tiež známy ako Application classloader.
 //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:

    Virtuálny procesor Tlmočník:Prečítajte si prúd bajtového kódu a potom vykonajte pokyny.Kompilátor Just-In-Time (JIT):Používa sa na zlepšenie výkonu. JIT kompiluje časti bajtového kódu, ktoré majú podobnú funkčnosť v rovnakom čase, a tým znižuje množstvo času potrebného na kompiláciu. Pojem 'kompilátor' sa tu vzťahuje na prekladač z inštrukčnej sady virtuálneho stroja Java (JVM) do inštrukčnej sady špecifického CPU.

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.