A JVM (Java Virtual Machine) egy absztrakt gép. Ez egy olyan specifikáció, amely futási környezetet biztosít, amelyben a java bájtkód végrehajtható.
A JVM-ek számos hardver- és szoftverplatformhoz elérhetők (azaz a JVM platformfüggő).
Mi az a JVM
Ez:
- Egy specifikáció ahol meg van adva a Java Virtual Machine működése. De a megvalósítás szolgáltatója független az algoritmus kiválasztásától. A megvalósítást az Oracle és más cégek biztosították.
- Egy megvalósítás Megvalósítása JRE (Java Runtime Environment) néven ismert.
- Futásidejű példány Amikor a java osztály futtatásához java parancsot ír a parancssorba, létrejön a JVM egy példánya.
Mit csinál
A JVM a következő műveleteket hajtja végre:
- Kód betöltése
- Ellenőrzi a kódot
- Kódot hajt végre
- Futási környezetet biztosít
A JVM definíciókat ad a következőkhöz:
- Memória terület
- Osztály fájlformátuma
- Regisztráció készlet
- Összegyűjtött szemétdomb
- Végzetes hibajelentés stb.
JVM építészet
Ismerjük meg a JVM belső architektúráját. Tartalmaz osztálybetöltőt, memóriaterületet, végrehajtó motort stb.
1) Osztályfeltöltő
A Classloader a JVM alrendszere, amely osztályfájlok betöltésére szolgál. Amikor futtatjuk a java programot, először az osztálybetöltő tölti be. A Java-ban három beépített osztálybetöltő található.
//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()); } }Tesztelje most
Kimenet:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Ezek a Java által biztosított belső osztálybetöltők. Ha saját osztálybetöltőt szeretne létrehozni, ki kell bővítenie a ClassLoader osztályt.
2) Osztály(Módszer) Terület
A Class(Method) Area osztályonkénti struktúrákat tárol, például a futásidejű állandó készletet, a mező- és metódusadatokat, valamint a metódusok kódját.
3) Halom
Ez az a futásidejű adatterület, amelyben az objektumok le vannak foglalva.
4) Verem
A Java Stack kereteket tárol. Helyi változókat és részeredményeket tartalmaz, és szerepet játszik a metódusok meghívásában és visszatérésében.
Minden szálhoz tartozik egy privát JVM-verem, amely a szálakkal egy időben jön létre.
Minden alkalommal új keret jön létre, amikor egy metódust meghívnak. Egy keret megsemmisül, amikor a metódushívása befejeződik.
5) Program Counter Register
A PC (programszámláló) regiszter tartalmazza az éppen végrehajtott Java virtuális gép utasítás címét.
6) Native Method Stack
Tartalmazza az alkalmazásban használt összes natív módszert.
mi az a desktop ini
7) Végrehajtó motor
Tartalmaz:
8) Java natív felület
A Java Native Interface (JNI) egy olyan keretrendszer, amely interfészt biztosít egy másik nyelven írt alkalmazással való kommunikációhoz, például C, C++, Assembly stb. A Java a JNI keretrendszert használja a kimenetek konzolra küldésére vagy az operációs rendszer könyvtáraival való interakcióra.