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:
- 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.
- Īstenošana Tās ieviešana ir pazīstama kā JRE (Java Runtime Environment).
- 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.
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.
//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:
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.