
Garbage Collector
Aplikacje do poprawnego działania potrzebują pamięci, która wraz z czasem użycia aplikacji skończyłaby się – gdyby nie GC. Garbage Collector jest mechanizmem odpowiedzialnym za automatyczne zwalnianie dynamicznie alokowanej pamięci. Co pewien czas sprawdza on aktualny stan pamięci i usuwa z niej nieużywane obiekty.
GC jest jedynie nazwą procesu, każdy z języków może implementować go inaczej. Ważne, że dzięki niemu programista nie musi myśleć o zarządzaniu dynamicznie przydzielanej pamięci. Jest to jedna z cech języków wysokopoziomowych takich jak: Python Ruby, Java lub C#, czego nie spotka się w językach niższego poziomu np. C++.
JVM Garbage Collector – implementacje
JVM Garbage Collector posiada cztery implementacje:
- Serial Garbage Collector,
- Parallel Garbage Collector,
- CMS Garbage Collector,
- G1 Garbage Collector.
Dla Java 8 domyślnie jest używany Parallel GC, zaś w Java 9 oraz 10 wykorzystywany jest G1 GC. Używaną implementację GC można zmienić podając parametr wejściowy podczas uruchamiania JVM. Taka zmiana jest jednym z elementów tzw. JVM Tuningu – czyli poprawiania wydajności JVM.
Trochę więcej o konkretnych implementacjach JVM GC można przeczytać w tym artykule.