Maszyna wirtualna Java - moduł ładujący klasy
JVM zarządza procesem ładowania, łączenia i inicjowania klas i interfejsów w sposób dynamiczny. Podczas procesu ładowaniaJVM finds the binary representation of a class and creates it.
Podczas procesu łączenia loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. Maszyna JVM zasadniczo używa tabeli symboli przechowywanej w puli stałych czasu wykonywania do procesu łączenia. Inicjalizacja składa się właściwie zexecuting the linked classes.
Rodzaje ładowarek
Plik BootStrapmoduł ładujący klasy znajduje się na szczycie hierarchii programu ładującego klasy. Ładuje standardowe klasy JDK w katalogu lib środowiska JRE .
Plik Extension program ładujący klasy znajduje się w środku hierarchii programu ładującego klasy i jest bezpośrednim dzieckiem programu ładującego klasy ładujące i ładuje klasy w katalogu lib \ ext środowiska JRE.
Plik Applicationmoduł ładujący klasy znajduje się na dole hierarchii programu ładującego klasy i jest bezpośrednim dzieckiem programu ładującego klasy aplikacji. Ładuje pliki JAR i klasy określone przezCLASSPATH ENV zmienna.
Łączenie
Proces łączenia składa się z następujących trzech kroków -
Verification- Dokonuje tego weryfikator kodu bajtowego, aby upewnić się, że wygenerowane pliki .class (kod bajtowy) są prawidłowe. Jeśli nie, generowany jest błąd i proces łączenia zostaje zatrzymany.
Preparation - Pamięć jest przydzielana do wszystkich zmiennych statycznych klasy i są inicjowane z wartościami domyślnymi.
Resolution- Wszystkie symboliczne odniesienia do pamięci są zastępowane oryginalnymi odniesieniami. Aby to osiągnąć, używana jest tablica symboli w pamięci stałej czasu wykonywania obszaru metod klasy.
Inicjalizacja
To ostatnia faza procesu ładowania klas. Zmiennym statycznym przypisywane są oryginalne wartości i wykonywane są bloki statyczne.