Mój program używa biblioteki ASM do generowania klasy adhoc w celu wydajnego obliczenia. Każde połączenie generuje nową klasę.
Instancja modułu ładującego, która definiuje klasę adhoc, i wszystkie instancje klasy adhoc będą niedostępne w krótkim czasie. Czy po tym zostanie zwolniony kod klasy adhoc?
Odpowiedzi:
3 dla odpowiedzi № 1Tak, po tym, jak moduł ładujący kwalifikuje się do odśmiecania, wówczas załadowane przez niego klasy będą również kwalifikować się do odśmiecania (pod warunkiem, że nie ma innych odniesień do klas).
0 dla odpowiedzi nr 2
Zależy, co masz na myśli „po tym”. Nie można wymusić uruchomienia modułu wyrzucania elementów bezużytecznych, samo środowisko zdecyduje, czy ma zostać uruchomione, nawet jeśli zostanie to „jawnie wywołane”.
W rzeczywistości wywołanie gc w celu uruchomienia jest po prostu „żądaniem” jego uruchomienia.
Więc: czy zmienna, do której nie ma już odniesienia, zostanie oczyszczona? Tak. Kiedy to się stanie? Tego nie możemy powiedzieć na pewno. Zasadniczo odpowiedź brzmi: „kiedy gc decyduje się to wyczyścić”.