Kiedy używać System.gc() ?

0

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....

1

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.

0

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).

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1