logo

Architektura JVM (Java Virtual Machine).

  1. Java virtuální stroj

JVM (Java Virtual Machine) je abstraktní stroj. Je to specifikace, která poskytuje běhové prostředí, ve kterém lze spustit bytecode java.

JVM jsou k dispozici pro mnoho hardwarových a softwarových platforem (tj. JVM je závislé na platformě).

To je:

datum použití java
  1. Specifikace kde je specifikováno fungování Java Virtual Machine. Ale poskytovatel implementace je nezávislý na výběru algoritmu. Jeho implementaci zajistila společnost Oracle a další společnosti.
  2. Implementace Jeho implementace je známá jako JRE (Java Runtime Environment).
  3. Runtime instance Kdykoli napíšete příkaz java do příkazového řádku pro spuštění třídy java, vytvoří se instance JVM.

Co to dělá

JVM provádí následující operace:

  • Načte kód
  • Ověřuje kód
  • Spustí kód
  • Poskytuje běhové prostředí

  • Hromada odpadků
  • Hlášení fatálních chyb atd.

Architektura JVM

Pojďme pochopit vnitřní architekturu JVM. Obsahuje classloader, paměťovou oblast, prováděcí engine atd.

Architektura JVM

1) Classloader

Classloader je subsystém JVM, který se používá k načítání souborů tříd. Kdykoli spustíme java program, je nejprve načten classloaderem. V Javě jsou tři vestavěné classloadery.

    : Toto je první classloader, který je supertřídou Extension classloader. Načte se soubor, který obsahuje všechny soubory tříd Java Standard Edition, jako jsou třídy balíčků java.lang, třídy balíčků java.net, třídy balíčků java.util, třídy balíčků java.io, třídy balíčků java.sql atd.: Toto je podřízený classloader Bootstrapu a nadřazený classloader System classloader. Načte soubory jar umístěné uvnitř adresář.Systém/aplikace ClassLoader: Toto je podřízený classloader Extension classloader. It loads the classfiles from classpath. Ve výchozím nastavení je classpath nastavena na aktuální adresář. Cestu třídy můžete změnit pomocí přepínače „-cp“ nebo „-classpath“. It is also known as 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()); } } 
Otestujte to hned

Výstup:

 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Toto jsou interní zavaděče tříd poskytované Javou. Pokud si chcete vytvořit svůj vlastní classloader, musíte rozšířit třídu ClassLoader.

Class(Method) Area ukládá struktury pro jednotlivé třídy, jako je fond konstant za běhu, data polí a metod, kód metod.

3) Hromada

Je to oblast runtime dat, ve které jsou alokovány objekty.

co dělá počítač rychlým

Java Stack stores frames. Obsahuje lokální proměnné a dílčí výsledky a hraje roli při vyvolání a návratu metody.

Každé vlákno má soukromý zásobník JVM vytvořený současně s vláknem.

Při každém vyvolání metody se vytvoří nový rámec. Rámec je zničen po dokončení vyvolání jeho metody.

Registr PC (program counter) obsahuje adresu aktuálně prováděné instrukce virtuálního stroje Java.

6) Zásobník nativních metod

Obsahuje všechny nativní metody používané v aplikaci.

Obsahuje:

    Tlumočník:Přečtěte si tok bajtového kódu a poté proveďte instrukce.Kompilátor Just-In-Time (JIT):Používá se ke zlepšení výkonu. JIT kompiluje části bajtového kódu, které mají podobnou funkci ve stejnou dobu, a tím snižuje množství času potřebného pro kompilaci. Zde termín 'kompilátor' označuje překladač z instrukční sady virtuálního stroje Java (JVM) do instrukční sady konkrétního CPU.

Java Native Interface (JNI) je rámec, který poskytuje rozhraní pro komunikaci s jinou aplikací napsanou v jiném jazyce, jako je C, C++, Assembly atd. Java používá rámec JNI k odesílání výstupu do konzole nebo k interakci s knihovnami OS.