JVM (Java Virtual Machine) je apstraktni stroj. To je specifikacija koja pruža runtime okruženje u kojem se može izvršiti java bytecode.
ipconfig za ubuntu
JVM-ovi su dostupni za mnoge hardverske i softverske platforme (tj. JVM ovisi o platformi).
Što je JVM
To je:
- Specifikacija gdje je specificiran rad Java Virtual Machine. Ali pružatelj implementacije neovisan je u odabiru algoritma. Njegovu implementaciju osigurali su Oracle i druge tvrtke.
- Implementacija Njegova implementacija poznata je kao JRE (Java Runtime Environment).
- Instanca vremena izvođenja Kad god napišete java naredbu na naredbenom retku za pokretanje java klase, stvara se instanca JVM.
Što to radi
JVM izvodi sljedeće operacije:
- Učitava kod
- Provjerava kod
- Izvršava kod
- Omogućuje runtime okruženje
JVM daje definicije za:
- Područje memorije
- Format datoteke klase
- Registar set
- Sakupljena gomila smeća
- Prijava fatalne pogreške itd.
JVM arhitektura
Hajdemo razumjeti unutarnju arhitekturu JVM-a. Sadrži učitavač klasa, memorijsko područje, pogon za izvršavanje itd.
1) Classloader
Classloader je podsustav JVM-a koji se koristi za učitavanje datoteka klasa. Kad god pokrenemo java program, prvo ga učitava classloader. Postoje tri ugrađena učitavača klasa u Javi.
//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()); } }Testirajte sada
Izlaz:
oštar kut
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Ovo su interni učitavači klasa koje nudi Java. Ako želite stvoriti vlastiti učitavač klasa, trebate proširiti klasu Učitavača klasa.
2) Područje klase (metode).
Područje klase (metoda) pohranjuje strukture po klasama kao što su skup konstanti vremena izvođenja, podaci o polju i metodi, kod za metode.
3) Hrpa
To je područje podataka za vrijeme izvođenja u kojem se dodjeljuju objekti.
4) Stog
Java Stack pohranjuje okvire. Sadrži lokalne varijable i djelomične rezultate te igra ulogu u pozivanju i vraćanju metode.
Svaka nit ima privatni JVM stog, kreiran u isto vrijeme kad i nit.
Svaki put kada se pozove metoda kreira se novi okvir. Okvir se uništava kada se dovrši pozivanje njegove metode.
5) Registar programskog brojača
PC (brojač programa) registar sadrži adresu instrukcije Java virtualnog stroja koja se trenutno izvršava.
6) Native Method Stack
Sadrži sve izvorne metode korištene u aplikaciji.
cijepanje nizova c++
7) Izvršni motor
Sadrži:
8) Java izvorno sučelje
Java izvorno sučelje (JNI) je okvir koji pruža sučelje za komunikaciju s drugom aplikacijom napisanom na drugom jeziku kao što su C, C++, Assembly itd. Java koristi JNI okvir za slanje izlaza na konzolu ili interakciju s bibliotekama OS-a.