Ulepszenie współdzielenia danych w klasach Javy może poprawić czas uruchamiania systemu
-
- Paul Krill,
- 23.01.2023, godz. 09:18
Plan OpenJDK poprawiłby wsparcie dla zarchiwizowanych obiektów sterty Java w udostępnianiu danych klasowych, dostosowując się do wysiłku Project Leyden w celu poprawy wydajności uruchamiania. Wysiłki zmierzające do poprawy czasów uruchamiania programów w Javie i ich wydajności mają obejmować poprawę wsparcia dla zarchiwizowanych obiektów sterty Javy w CDS (class data sharing).

Plan ten, upubliczniony przez Ioi Lama z Oracle w RFC społeczności OpenJDK pod koniec 2022, jest zgodny z Project Leyden, wysiłkiem mającym na celu poprawę czasów uruchamiania aplikacji Java, jak również czasów osiągania szczytowej wydajności i śladów programów. Lam zauważył, że Projekt Leyden będzie prawdopodobnie szeroko wykorzystywał zarchiwizowane obiekty sterty Javy.
Cele planu usprawnienia CDS obejmują jednolite wsparcie CDS dla wszystkich kolektorów i minimalizację kodu potrzebnego do obsługi CDS przez każdy kolektor. Sam CDS ma na celu skrócenie czasu uruchamiania aplikacji, w szczególności dla mniejszych aplikacji. CDS jest obsługiwany tylko przez maszynę wirtualną klienta Java HotSpot i tylko przez seryjny garbage collector.
Zobacz również:
- IBM wprowadza Watsonx do tłumaczenia programów COBOL na kod Java
- Oracle prezentuje GraalOS dla bezserwerowej Javy
Plan ulepszenia CDS wygląda tak:
• Usunięcie zależności G1 garbage collector od zapisu sterty archiwalnej; powstał już działający prototyp.
• Konsolidacja sterty archiwum w jeden spójny blok. Celem jest ułatwienie mmapowania (mapowania pamięci) sterty archiwum do różnych kolektorów. W ramach tego kroku planowane jest również usunięcie typów regionów archiwalnych G1.
• Implementacja mmap regionu archiwalnego dla innych kolektorów. Oczekuje się, że implementacja będzie dość prosta.
Od Java Development Kit (JDK) 20, który ma być wydany produkcyjnie w marcu, realizatorzy planu muszą radzić sobie z ograniczeniami, w tym z dumpingiem archiwów CDS obsługiwanym tylko przez kolektor G1, G1 posiadającym specjalną procedurę alokacji miejsca na stercie i mmap obsługiwanym tylko w G1.
Impulsem do stworzenia propozycji CDS był plan rozwoju Javy, aby mieć jednolite API do używania zarchiwizowanych regionów. Propozycja ta pojawiła się w listopadzie ubiegłego roku.
Źródło: Infoworld