Technika wielokrotnego mapowania zastosowana w ZGC polega na mapowaniu różnych zakresów pamięci wirtualnej na tę samą pamięć fizyczną. Technikę tę stosuje się w celu umożliwienia większej liczby jednoczesnych prac związanych ze zbieraniem śmieci poprzez zmniejszenie narzutu barier obciążeniowych. Oto kilka kluczowych punktów dotyczących wpływu tej techniki na wydajność systemu:
Wiele map i wydajność systemu
1. Zmniejszony narzut bariery obciążenia: Multimapowanie zmniejsza narzut barier obciążenia, umożliwiając modułowi wyrzucania elementów bezużytecznych szybkie określenie, czy obiekt znajduje się w określonym stanie (np. oznaczony czy nieoznaczony). Zmniejsza to liczbę instrukcji maszynowych wymaganych dla barier obciążeniowych, co prowadzi do poprawy wydajności.
2. Większa współbieżność: Multimapowanie umożliwia bardziej współbieżną pracę związaną z usuwaniem elementów bezużytecznych, umożliwiając modułowi wyrzucającemu elementy bezużyteczne przetwarzanie wielu obiektów równolegle. Zwiększa to ogólną przepustowość modułu zbierającego elementy bezużyteczne i skraca czas przestojów.
3. Większa wydajność pamięci: Wielomapowanie może prowadzić do poprawy wydajności pamięci poprzez zmniejszenie ilości pamięci wymaganej dla sterty. Dzieje się tak dlatego, że tę samą pamięć fizyczną można przypisać do wielu zakresów pamięci wirtualnej, co zmniejsza ogólne wykorzystanie pamięci.
4. Większa złożoność: Multimapowanie wprowadza dodatkową złożoność do modułu zbierającego elementy bezużyteczne, co może prowadzić do zwiększonych kosztów konserwacji i potencjalnych problemów z wydajnością.
5. Wpływ na zasoby systemowe: Multimapowanie może mieć wpływ na zasoby systemowe, takie jak użycie procesora i pamięci. Moduł zbierający elementy bezużyteczne musi zarządzać mapowaniami i upewnić się, że przetwarzane są prawidłowe obiekty, co może prowadzić do zwiększonego użycia procesora.
6. Wpływ na wydajność systemu: Wielomapowanie może mieć znaczący wpływ na wydajność systemu, szczególnie pod względem czasu pauzy i przepustowości. Moduł zbierający elementy bezużyteczne musi zarządzać mapowaniami i zapewniać przetwarzanie właściwych obiektów, co może prowadzić do wydłużenia czasu wstrzymania i zmniejszenia przepustowości.
7. Wpływ na stabilność systemu: Wielomapowanie może również wpływać na stabilność systemu, szczególnie jeśli mapowania nie są prawidłowo zarządzane. Może to prowadzić do problemów, takich jak wycieki pamięci lub nieprawidłowe odniesienia do obiektów.
8. Wpływ na skalowalność systemu: Wielomapowanie może mieć wpływ na skalowalność systemu, szczególnie jeśli mapowania nie są prawidłowo zarządzane. Może to prowadzić do problemów, takich jak zwiększone użycie pamięci lub zmniejszona wydajność.
Podsumowując, technika wielokrotnego mapowania ZGC może mieć zarówno pozytywny, jak i negatywny wpływ na wydajność systemu. Chociaż może to zmniejszyć obciążenie bariery obciążenia i zwiększyć współbieżność, może również wprowadzić dodatkową złożoność i wpłynąć na zasoby i stabilność systemu.
Cytaty:[1] https://codeline24.com/java-21-path-to-generation-zgc/
[2] https://openjdk.org/jeps/439
[3] https://www.opsian.com/blog/javas-new-zgc-is-very-exciting/
[4] https://dev.java/learn/jvm/tool/garbage-collection/zgc-deepdive/
[5] https://www.diva-portal.org/smash/get/diva2:1466940/FULLTEXT01.pdf