logo

JVM (Java Virtual Machine) -arkkitehtuuri

  1. Java-virtuaalikone
  2. JVM:n sisäinen arkkitehtuuri

JVM (Java Virtual Machine) on abstrakti kone. Se on spesifikaatio, joka tarjoaa ajonaikaisen ympäristön, jossa java-tavukoodi voidaan suorittaa.

JVM:itä on saatavana monille laitteisto- ja ohjelmistoalustoille (eli JVM on alustariippuvainen).

matriisit c-ohjelmoinnissa

Mikä on JVM

Se on:

  1. Erittely jossa Java-virtuaalikoneen toiminta on määritelty. Toteutustoimittaja on kuitenkin riippumaton algoritmin valinnassa. Sen toteutuksen ovat toteuttaneet Oracle ja muut yritykset.
  2. Toteutus Sen toteutus tunnetaan nimellä JRE (Java Runtime Environment).
  3. Ajonaikainen ilmentymä Aina kun kirjoitat java-komennon komentokehotteeseen suorittaaksesi java-luokan, JVM-instanssi luodaan.

Mitä se tekee

JVM suorittaa seuraavan toiminnon:

  • Lataa koodia
  • Vahvistaa koodin
  • Suorittaa koodin
  • Tarjoaa ajonaikaisen ympäristön

JVM tarjoaa määritelmät seuraaville:

  • Muistialue
  • Luokan tiedostomuoto
  • Rekisterisarja
  • Kerätty roskakasa
  • Vakava virheilmoitus jne.

JVM-arkkitehtuuri

Ymmärretään JVM:n sisäinen arkkitehtuuri. Se sisältää luokkalataimen, muistialueen, suoritusmoottorin jne.

JVM-arkkitehtuuri

1) Classloader

Classloader on JVM:n alijärjestelmä, jota käytetään luokkatiedostojen lataamiseen. Aina kun suoritamme Java-ohjelman, luokanlataaja lataa sen ensin. Javassa on kolme sisäänrakennettua luokanlataajaa.

    Bootstrap ClassLoader: Tämä on ensimmäinen luokanlataaja, joka on Extension-luokan latausohjelman superluokka. Se lataa rt.jar tiedosto, joka sisältää kaikki Java Standard Editionin luokkatiedostot, kuten java.lang-pakettiluokat, java.net-pakettiluokat, java.util-pakettiluokat, java.io-pakettiluokat, java.sql-pakettiluokat jne.Laajennus ClassLoader: Tämä on Bootstrapin aliluokkalataaja ja System Classloaderin yläluokkalataaja. Se lataa sisällä olevat jar-tiedostot $JAVA_HOME/jre/lib/ext hakemistosta.Järjestelmä/sovellus ClassLoader: Tämä on Extension classloaderin lapsiluokkalataus. Se lataa luokkatiedostot luokkapolusta. Oletusarvoisesti luokkapolku on asetettu nykyiseen hakemistoon. Voit muuttaa luokkapolkua '-cp'- tai '-classpath'-kytkimellä. Se tunnetaan myös nimellä 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()); } } 
Testaa nyt

Lähtö:

 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Nämä ovat Javan tarjoamia sisäisiä luokkalataajia. Jos haluat luoda oman luokanlataajasi, sinun on laajennettava ClassLoader-luokkaa.

2) Luokka(menetelmä) Alue

Class(Method) Area tallentaa luokkakohtaisia ​​rakenteita, kuten ajonaikaisen vakiovarannon, kenttä- ja menetelmätiedot sekä menetelmien koodin.

3) Kasa

Se on ajonaikainen tietoalue, jolle objektit allokoidaan.

java avaa tiedoston

4) Pinoa

Java Stack tallentaa kehyksiä. Se sisältää paikalliset muuttujat ja osatulokset, ja se osallistuu menetelmän kutsumiseen ja palautukseen.

Jokaisella säikeellä on yksityinen JVM-pino, joka luodaan samaan aikaan säikeen kanssa.

Uusi kehys luodaan aina, kun menetelmää kutsutaan. Kehys tuhoutuu, kun sen menetelmän kutsu on valmis.

5) Ohjelmalaskurirekisteri

PC (ohjelmalaskuri) -rekisteri sisältää parhaillaan suoritettavan Java-virtuaalikonekäskyn osoitteen.

6) Native Method Stack

Se sisältää kaikki sovelluksessa käytetyt alkuperäiset menetelmät.

7) Suoritusmoottori

Se sisältää:

    Virtuaalinen prosessori Tulkki:Lue tavukoodivirta ja suorita ohjeet.Just-In-Time (JIT) -kääntäjä:Sitä käytetään suorituskyvyn parantamiseen. JIT kääntää tavukoodin osia, joilla on samanlainen toiminnallisuus samanaikaisesti, ja vähentää siten kääntämiseen tarvittavaa aikaa. Tässä termi 'kääntäjä' viittaa kääntäjään Java-virtuaalikoneen (JVM) käskyjoukosta tietyn CPU:n käskysarjaan.

8) Java Native Interface

Java Native Interface (JNI) on kehys, joka tarjoaa käyttöliittymän kommunikointiin toisen sovelluksen kanssa, joka on kirjoitettu toisella kielellä, kuten C, C++, Assembly jne. Java käyttää JNI-kehystä tulosteiden lähettämiseen konsoliin tai vuorovaikutukseen käyttöjärjestelmän kirjastojen kanssa.

nukkua javascriptissä