logo

JVM (Java virtuālās mašīnas) arhitektūra

  1. Java virtuālā mašīna
  2. JVM iekšējā arhitektūra

JVM (Java Virtual Machine) ir abstrakta mašīna. Tā ir specifikācija, kas nodrošina izpildlaika vidi, kurā var izpildīt java baitu kodu.

a-b atzarošana

JVM ir pieejami daudzām aparatūras un programmatūras platformām (t.i., JVM ir atkarīga no platformas).

Kas ir JVM

Tas ir:

  1. Specifikācija kur ir norādīta Java virtuālās mašīnas darbība. Bet ieviešanas nodrošinātājs izvēlas algoritmu neatkarīgi. Tās ieviešanu ir nodrošinājuši Oracle un citi uzņēmumi.
  2. Īstenošana Tās ieviešana ir pazīstama kā JRE (Java Runtime Environment).
  3. Izpildlaika instance Ikreiz, kad komandu uzvednē ierakstāt java komandu, lai palaistu java klasi, tiek izveidots JVM gadījums.

Ko tas dara

JVM veic šādas darbības:

  • Ielādē kodu
  • Pārbauda kodu
  • Izpilda kodu
  • Nodrošina izpildlaika vidi

JVM sniedz definīcijas:

  • Atmiņas apgabals
  • Klases faila formāts
  • Reģistrācijas komplekts
  • Savākto atkritumu kaudze
  • Fatālu kļūdu ziņošana utt.

JVM arhitektūra

Izpratīsim JVM iekšējo arhitektūru. Tajā ir klases ielādētājs, atmiņas apgabals, izpildes dzinējs utt.

JVM arhitektūra

1) Klases ielādētājs

Classloader ir JVM apakšsistēma, ko izmanto klases failu ielādei. Ikreiz, kad palaižam Java programmu, to vispirms ielādē klases ielādētājs. Java ir trīs iebūvēti klases ielādētāji.

    Bootstrap ClassLoader: Šis ir pirmais klases ielādētājs, kas ir paplašinājuma klases ielādētāja superklase. Tas ielādē rt.jar failu, kurā ir visi Java Standard Edition klašu faili, piemēram, java.lang pakotņu klases, java.net pakotņu klases, java.util pakotņu klases, java.io pakotņu klases, java.sql pakotņu klases utt.Paplašinājuma klases ielādētājs: Šis ir Bootstrap pakārtotais klases ielādētājs un sistēmas klases ielādētāja vecākais klases ielādētājs. Tas ielādē burku failus, kas atrodas iekšpusē $JAVA_HOME/jre/lib/ext direktoriju.Sistēmas/lietojumprogrammu klases ielādētājs: šī ir paplašinājuma klases ielādētāja bērnu klases ielādētājs. Tas ielādē klases failus no klases ceļa. Pēc noklusējuma klases ceļš ir iestatīts uz pašreizējo direktoriju. Klases ceļu var mainīt, izmantojot slēdzi “-cp” vai “-classpath”. Tas ir pazīstams arī kā lietojumprogrammu klases ielādētājs.
 //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()); } } 
Izmēģiniet to tūlīt

Izvade:

štati ASV
 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Tie ir iekšējie klases ielādētāji, ko nodrošina Java. Ja vēlaties izveidot savu klases ielādētāju, jums ir jāpaplašina ClassLoader klase.

2) Klases (metodes) apgabals

Klases (metodes) apgabalā tiek saglabātas katras klases struktūras, piemēram, izpildlaika konstantes pūls, lauka un metodes dati, metožu kods.

3) kaudze

Tas ir izpildlaika datu apgabals, kurā tiek piešķirti objekti.

4) Sakraut

Java Stack glabā rāmjus. Tajā ir lokāli mainīgie un daļējie rezultāti, un tam ir nozīme metodes izsaukšanā un atgriešanā.

Katram pavedienam ir privāts JVM steks, kas izveidots vienlaikus ar pavedienu.

Katru reizi, kad tiek izsaukta metode, tiek izveidots jauns rāmis. Kadrs tiek iznīcināts, kad tā metodes izsaukšana ir pabeigta.

5) Programmu skaitītāju reģistrs

PC (programmu skaitītāja) reģistrā ir pašlaik izpildāmās Java virtuālās mašīnas instrukcijas adrese.

6) Native Method Stack

Tajā ir visas lietojumprogrammā izmantotās vietējās metodes.

robeža, izmantojot css

7) Izpildes dzinējs

Tas satur:

    Virtuālais procesors Tulks:Izlasiet baitkoda straumi un pēc tam izpildiet instrukcijas.Just-In-Time (JIT) kompilators:To izmanto, lai uzlabotu veiktspēju. JIT vienlaikus apkopo baitu koda daļas, kurām ir līdzīga funkcionalitāte, un tādējādi samazina kompilēšanai nepieciešamo laiku. Šeit termins “kompilators” attiecas uz tulkotāju no Java virtuālās mašīnas (JVM) instrukciju kopas uz noteikta CPU instrukciju kopu.

8) Java Native Interface

Java Native Interface (JNI) ir ietvars, kas nodrošina saskarni, lai sazinātos ar citu lietojumprogrammu, kas rakstīta citā valodā, piemēram, C, C++, Assembly utt. Java izmanto JNI ietvaru, lai nosūtītu izvadi uz konsoli vai mijiedarbotos ar OS bibliotēkām.