logo

JVM-architectuur (Java Virtual Machine).

  1. Java virtuele machine
  2. Interne architectuur van JVM

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:

  1. 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.
  2. Een implementatie De implementatie ervan staat bekend als JRE (Java Runtime Environment).
  3. 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.

JVM-architectuur

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.

    Bootstrap ClassLoader: Dit is de eerste classloader die de superklasse is van Extension classloader. Het laadt de rt.jar bestand dat alle klassebestanden van Java Standard Edition bevat, zoals java.lang pakketklassen, java.net pakketklassen, java.util pakketklassen, java.io pakketklassen, java.sql pakketklassen etc.Extensie ClassLoader: Dit is de onderliggende klassenlader van Bootstrap en de bovenliggende klassenlader van de systeemklassenlader. Het laadt de jar-bestanden die zich daarin bevinden $JAVA_HOME/jre/lib/ext map.Systeem/Applicatie ClassLoader: Dit is de onderliggende classloader van Extension classloader. Het laadt de klassenbestanden van klassenpad. Standaard is classpath ingesteld op de huidige map. U kunt het klassenpad wijzigen met de schakelaar '-cp' of '-classpath'. Het is ook bekend als 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()); } } 
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:

    Een virtuele processor Tolk:Lees de bytecodestroom en voer vervolgens de instructies uit.Just-In-Time(JIT)-compiler:Het wordt gebruikt om de prestaties te verbeteren. JIT compileert delen van de bytecode die tegelijkertijd vergelijkbare functionaliteit hebben, en vermindert daardoor de hoeveelheid tijd die nodig is voor compilatie. Hier verwijst de term 'compiler' naar een vertaler van de instructieset van een Java virtual machine (JVM) naar de instructieset van een specifieke CPU.

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.