Hej! Mam pytanie do doświadczonych programistów Javy....
Kiedy używać funkcji gc()?
Tzn. System.gc() ?
Czy przed np. wykonaniem bardziej czasochłonnego i pamięciożernego zadania ? Czy to poprawi wydajność, zwiększy dostępną pamięć?
Z góry dzięki za opinie i przepraszam, jeśli pytanie jest głupie... Po prostu ciekawi mnie jak to jest w większych projektach/złożonych algorytmach itp....
- Rejestracja:prawie 20 lat
- Ostatnio:ponad 4 lata

- Rejestracja:około 20 lat
- Ostatnio:około godziny
System.gc() nie daje żadnych gwarancji, że odśmiecanie się wykona. Wydajności to nie powinno poprawić, natomiast jeśli JVM uzna, że odśmieci na żądanie to możesz oczekiwać, że przez chwilę nie będzie lagów spowodowanych odśmiecaniem, oczywiście zależy to od tego jak często alokujesz obiekty.



- Rejestracja:ponad 16 lat
- Ostatnio:około miesiąc
- Lokalizacja:Polska, Warszawa
- Postów:1058
Generalnie. Nigdy. :)
W programach, które mają ambicję należałoby teoretycznie użyć tego tuż po masowych zwolnieniach pamięci. Na przykład po zrobieniu masowych obliczeń i po zwolnieniu pamięci na ich wyniki pośrednie. Wtedy gc najszybciej i najłatwiej zdefragmentuje pamięć (połączy małe bloki w duże).




Generalnie wywołanie System.gc() jest traktowane jako sugestia, a nie rozkaz i nie ma większego sensu ręczne wołanie tej metody. Jeżeli chcesz poprawić wydajność w części związanej z odśmiecaniem to raczej zainteresuj się tym jak można skonfigurować GC.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.