Garbage Collector (GC) w Javie to mechanizm automatycznego zarządzania pamięcią, który pomaga programistom unikać problemów związanych z wyciekami pamięci. W poniższym artykule przedstawiam kompletny przykład wykorzystania GC, omówiony krok po kroku.
Przykład wykorzystania Garbage Collector w Javie
Rozważmy prosty przykład, w którym tworzymy obiekty i pozwalamy GC na ich usunięcie, gdy nie są już potrzebne. Poniższy kod Java demonstruje, jak można świadomie zarządzać pamięcią w prostym programie:
public class GarbageCollectorExample {
    public static void main(String[] args) {
        // Tworzymy instancję klasy Customer
        Customer customer1 = new Customer("Jan Kowalski");
        Customer customer2 = new Customer("Anna Nowak");
        // Wywołanie metody do przetwarzania danych klienta
        processCustomerData(customer1);
        // Ustawiamy customer1 na null, aby pozwolić GC na zwolnienie pamięci
        customer1 = null;
        // Wymuszamy działanie Garbage Collector
        System.gc();
        // Kontynuacja normalnych operacji
        System.out.println("Kontynuacja pracy programu z innym klientem.");
        processCustomerData(customer2);
    }
    // Metoda do przetwarzania danych klienta
    private static void processCustomerData(Customer customer) {
        // Symulacja przetwarzania danych
        System.out.println("Przetwarzanie danych dla: " + customer.getName());
    }
}
// Klasa reprezentująca klienta
class Customer {
    private String name; // Imię klienta
    public Customer(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    
    // Metoda finalize wywoływana przez GC przed zwolnieniem obiektu
    protected void finalize() {
        System.out.println(name + " jest teraz czyszczony.");
    }
}
Wyjaśnienie kodu:
- Customer class: Reprezentuje klienta z polem name. Posiada także metodęfinalize(), która jest wywoływana przez Garbage Collector tuż przed usunięciem obiektu z pamięci.
- processCustomerData: Symuluje przetwarzanie danych klienta. Można tutaj umieścić logikę związaną z przetwarzaniem informacji o kliencie.
- System.gc(): Jest to prośba do JVM o uruchomienie Garbage Collector. Nie gwarantuje natychmiastowego działania GC, ale w naszym przykładzie może pomóc zilustrować jego funkcje.
Podsumowanie
Garbage Collector jest potężnym narzędziem w Javie, które automatycznie zarządza pamięcią przez zwalnianie obiektów, które nie są już potrzebne. Rozumienie i świadome korzystanie z tego mechanizmu pozwala na pisanie bardziej efektywnego i bezpiecznego kodu. Choć w praktycznych zastosowaniach rzadko wymusza się działanie GC w sposób jawny, dobrze jest zrozumieć jego działanie i potencjalne skutki wywoływania System.gc().
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

