logo

Architektura JVM (wirtualna maszyna Java).

  1. Maszyna wirtualna Java
  2. Wewnętrzna architektura JVM

JVM (Java Virtual Machine) jest maszyną abstrakcyjną. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.

Maszyny JVM są dostępne dla wielu platform sprzętowych i programowych (tj. JVM jest zależny od platformy).

konstruktor w Javie

Co to jest JVM

To jest:

  1. Specyfikacja gdzie określono działanie wirtualnej maszyny Java. Ale dostawca implementacji jest niezależny w wyborze algorytmu. Jego wdrożenie zapewniła firma Oracle i inne firmy.
  2. Implementacja Jego implementacja znana jest jako JRE (Java Runtime Environment).
  3. Instancja środowiska uruchomieniowego Za każdym razem, gdy napiszesz polecenie Java w wierszu poleceń, aby uruchomić klasę Java, tworzona jest instancja JVM.

Co to robi

JVM wykonuje następującą operację:

  • Ładuje kod
  • Weryfikuje kod
  • Wykonuje kod
  • Zapewnia środowisko wykonawcze

JVM udostępnia definicje:

poradnik ssis
  • Obszar pamięci
  • Format pliku klasy
  • Rejestracja ustawiona
  • Kupa zebranych śmieci
  • Raportowanie błędów krytycznych itp.

Architektura JVM

Rozumiemy wewnętrzną architekturę JVM. Zawiera moduł ładujący klasy, obszar pamięci, silnik wykonawczy itp.

Architektura JVM

1) Moduł ładujący klasy

Classloader to podsystem JVM, który służy do ładowania plików klas. Ilekroć uruchamiamy program Java, jest on najpierw ładowany przez moduł ładujący klasy. W Javie są trzy wbudowane moduły ładujące klasy.

    Moduł ładujący klasy Bootstrap: Jest to pierwszy program ładujący klasy, który jest superklasą modułu ładującego klasy rozszerzenia. Ładuje rt.jar plik zawierający wszystkie pliki klas Java Standard Edition, takie jak klasy pakietów java.lang, klasy pakietów java.net, klasy pakietów java.util, klasy pakietów java.io, klasy pakietów java.sql itp.Rozszerzenie ClassLoader: Jest to podrzędny moduł ładujący klasy Bootstrap i nadrzędny moduł ładujący klasy System. Ładuje znajdujące się w nim pliki jar $JAVA_HOME/jre/lib/ext informator.Moduł ładujący klasy systemu/aplikacji: To jest moduł ładujący klasy podrzędne modułu ładującego klasy rozszerzenia. Ładuje pliki klas ze ścieżki klas. Domyślnie ścieżka klasy jest ustawiona na bieżący katalog. Możesz zmienić ścieżkę klasy za pomocą przełącznika „-cp” lub „-classpath”. Jest również znany jako moduł ładujący klasy aplikacji.
 //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()); } } 
Przetestuj teraz

Wyjście:

 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Są to wewnętrzne moduły ładujące klasy dostarczane przez Javę. Jeśli chcesz stworzyć własny moduł ładujący klasy, musisz rozszerzyć klasę ClassLoader.

2) Obszar klasy (metody).

Obszar klasy (metody) przechowuje struktury poszczególnych klas, takie jak pula stałych czasu wykonywania, dane pól i metod, kod metod.

3) Kupa

Jest to obszar danych wykonawczych, w którym przydzielane są obiekty.

4) Stos

Java Stack przechowuje ramki. Przechowuje zmienne lokalne i częściowe wyniki oraz odgrywa rolę w wywoływaniu i zwracaniu metod.

projekt singletona

Każdy wątek ma prywatny stos JVM, tworzony w tym samym czasie co wątek.

Przy każdym wywołaniu metody tworzona jest nowa ramka. Ramka zostaje zniszczona po zakończeniu wywoływania jej metody.

5) Rejestr liczników programów

Rejestr PC (licznik programu) zawiera adres aktualnie wykonywanej instrukcji wirtualnej maszyny Java.

Java, spróbuj złapać

6) Stos metod natywnych

Zawiera wszystkie natywne metody stosowane w aplikacji.

7) Silnik wykonawczy

Zawiera:

    Procesor wirtualny Interpretator:Przeczytaj strumień kodu bajtowego, a następnie wykonaj instrukcje.Kompilator Just-In-Time (JIT):Służy do poprawy wydajności. JIT kompiluje jednocześnie części kodu bajtowego, które mają podobną funkcjonalność, co zmniejsza ilość czasu potrzebnego na kompilację. W tym przypadku termin „kompilator” odnosi się do tłumacza zestawu instrukcji wirtualnej maszyny Java (JVM) na zestaw instrukcji konkretnego procesora.

8) Natywny interfejs Java

Java Native Interface (JNI) to framework zapewniający interfejs do komunikacji z inną aplikacją napisaną w innym języku, takim jak C, C++, Assembly itp. Java używa frameworku JNI do wysyłania danych wyjściowych do konsoli lub interakcji z bibliotekami systemu operacyjnego.