JVM (Java Virtual Machine) is een abstracte machine. Het is een specificatie die een runtime-omgeving biedt waarin Java-bytecode kan worden uitgevoerd.
krijg de arraylengte in c
JVM's zijn beschikbaar voor veel hardware- en softwareplatforms (dat wil zeggen dat JVM platformafhankelijk is).
Wat is JVM
Het is:
- Een specificatie waar de werking van Java Virtual Machine is gespecificeerd. Maar de implementatieprovider is onafhankelijk in het kiezen van het algoritme. De implementatie ervan is verzorgd door Oracle en andere bedrijven.
- Een implementatie De implementatie ervan staat bekend als JRE (Java Runtime Environment).
- Runtime-instantie Telkens wanneer u een Java-opdracht op de opdrachtprompt schrijft om de Java-klasse uit te voeren, wordt er een exemplaar van JVM gemaakt.
Wat het doet
De JVM voert de volgende bewerking uit:
- Laadt code
- Verifieert code
- Voert code uit
- Biedt een runtime-omgeving
JVM biedt definities voor de:
- Geheugengebied
- Klasse bestandsformaat
- Register ingesteld
- Afval verzamelde hoop
- Rapportage van fatale fouten enz.
JVM-architectuur
Laten we de interne architectuur van JVM begrijpen. Het bevat classloader, geheugengebied, uitvoeringsengine enz.
1) Klassenlader
Classloader is een subsysteem van JVM dat wordt gebruikt om klassebestanden te laden. Telkens wanneer we het Java-programma uitvoeren, wordt het eerst door de classloader geladen. Er zijn drie ingebouwde classloaders in 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()); } }Test het nu
Uitgang:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Dit zijn de interne classloaders die door Java worden geleverd. Als u uw eigen classloader wilt maken, moet u de ClassLoader-klasse uitbreiden.
2) Klasse (methode) gebied
Class(Method) Area slaat structuren per klasse op, zoals de runtime-constantepool, veld- en methodegegevens en de code voor methoden.
3) Hoop
Het is het runtimegegevensgebied waarin objecten worden toegewezen.
4) Stapel
Java Stack slaat frames op. Het bevat lokale variabelen en gedeeltelijke resultaten, en speelt een rol bij het aanroepen en retourneren van methoden.
Elke thread heeft een privé-JVM-stack, die tegelijkertijd met de thread wordt gemaakt.
Elke keer dat een methode wordt aangeroepen, wordt er een nieuw frame gemaakt. Een frame wordt vernietigd wanneer de aanroep van de methode is voltooid.
regisseur Karan Johar
5) Programmeertellerregister
Het PC-register (programmateller) bevat het adres van de Java Virtual Machine-instructie die momenteel wordt uitgevoerd.
6) Native methodestapel
Het bevat alle native methoden die in de applicatie worden gebruikt.
7) Uitvoeringsmotor
Het bevat:
8) Java-native interface
Java Native Interface (JNI) is een raamwerk dat een interface biedt om te communiceren met een andere applicatie die in een andere taal is geschreven, zoals C, C++, Assembly enz. Java gebruikt het JNI-framework om uitvoer naar de console te sturen of om met besturingssysteembibliotheken te communiceren.