abc Programski jezik Java
Teorijska priprema - Unutrašnji detalji JVM

Kao što je rečeno, JVM (Java Virtual Machine) je apstraktna mašina. To je specifikacija koja obezbjeđuje runtime okruženje u kojem java bytecode može biti izvršen.
JVM su raspoložive za mnoge hardverske i softverske platforme (tj. JVM je platformno zavisna).
Šta je JVM?
To je:

  1. Specifikacija gdje je rad Java Virtual Machine specificiran. Ali  provajder implementacije je nezavisan u izboru algoritma. Implementaciju obezbjeđuju Sun i druge kompanije.
  2. Implementacija. Implementacija je poznata kao JRE (Java Runtime Environment).
  3. Runtime Instanca. Kadgod napišemo java komandu u komandnom promptu da pokrenemo java klasu, kreira se instanca JVM.

Šta radi JVM?
JVM izvršava sljedeće operacije:

  • Učitava kod
  • Verifikuje kod
  • Izvršava kod
  • Obezbjeđuje runtime okruženje

JVM obezbjeđuje definicije za:

  • Memorijski prostor
  • Format class fajla
  • Registar set
  • Garbage-collection heap
  • Fatal error izvještaj itd.

Interna arhitektura JVM
Pogledajmo internu arhitekturu JVM. Ona sadrži classloader, memorijski prostor, execution engine itd.



1) Classloader
Classloader je podsistem JVM koji se koristi za učitavanje class fajlova.

2) Class (Metod) Area
Class (Metod) Area sprema strukture iz klasa kao što su runtime constant pool, podaci polja i metoda, kod za metode.

3) Heap
To je oblast runtime podataka u kojoj su alocirani objekti.

4) Stack
Java Stack sprema okvire (frames). On sadrži lokalne varijable i djelimične rezultate, a igra ulogu i u pozivu metoda i vraćanju.
Svaka nit (thread) ima privatni JVM stack, kreiran  u isto vrijeme kada i nit.
Novi okvir se kreira svaki put kada se poziva metod. Okvir se uništava kada se poziv metoda završi.

5) Registar programskog brojača (Program Counter Register)
PC (program counter) registar. On sadrži adresu instrukcije Java virtualne mašine koja se trenutno izvršava.

6) Native Method Stack
On sadrži sve sopstvene tzv. “nativne” metode koje se koriste u aplikaciji.

Razlike između JDK, JRE i JVM    <    Index    >    Varijabla i tip podataka u Javi