JVM (Java Virtual Machine) är en abstrakt maskin. Det är en specifikation som tillhandahåller runtime-miljö där java-bytekod kan köras.
JVM är tillgängliga för många hårdvaru- och mjukvaruplattformar (dvs. JVM är plattformsberoende).
Vad är JVM
Det är:
tostring-metoden
- En specifikation där funktion av Java Virtual Machine specificeras. Men implementeringsleverantören är oberoende att välja algoritm. Dess implementering har tillhandahållits av Oracle och andra företag.
- Ett genomförande Dess implementering är känd som JRE (Java Runtime Environment).
- Runtime-instans När du skriver java-kommandot på kommandotolken för att köra java-klassen skapas en instans av JVM.
Vad den gör
JVM utför följande operation:
- Laddar kod
- Verifierar kod
- Kör kod
- Ger körtidsmiljö
JVM tillhandahåller definitioner för:
- Minnesområde
- Klass filformat
- Register set
- Avfallshög
- Fatal felrapportering mm.
JVM arkitektur
Låt oss förstå den interna arkitekturen hos JVM. Den innehåller klassladdare, minnesområde, exekveringsmotor etc.
1) Klassladdare
Classloader är ett undersystem till JVM som används för att ladda klassfiler. När vi kör java-programmet laddas det först av klassladdaren. Det finns tre inbyggda klassladdare i 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()); } }Testa det nu
Produktion:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Dessa är de interna klassladdare som tillhandahålls av Java. Om du vill skapa din egen klassladdare måste du utöka klassen ClassLoader.
2) Klass(Metod) Area
Class(Method) Area lagrar strukturer per klass som körtidskonstantenpoolen, fält- och metoddata, koden för metoder.
3) Hög
Det är körtidsdataområdet där objekt allokeras.
java int till dubbel
4) Stapla
Java Stack lagrar ramar. Den innehåller lokala variabler och delresultat, och spelar en roll i metodanrop och retur.
Varje tråd har en privat JVM-stack, skapad samtidigt som tråden.
En ny ram skapas varje gång en metod anropas. En ram förstörs när dess metodanrop är klar.
5) Programräknareregister
PC-registret (programräknare) innehåller adressen till den Java-virtuella maskininstruktion som för närvarande exekveras.
6) Native Method Stack
Den innehåller alla inhemska metoder som används i applikationen.
7) Utförandemotor
Det innehåller:
8) Java Native Interface
Java Native Interface (JNI) är ett ramverk som tillhandahåller ett gränssnitt för att kommunicera med en annan applikation skriven på ett annat språk som C, C++, Assembly etc. Java använder JNI-ramverket för att skicka utdata till konsolen eller interagera med OS-bibliotek.