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:
- 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.
- Implementacja Jego implementacja znana jest jako JRE (Java Runtime Environment).
- 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.
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.
//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:
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.