Opracowałem aplikację internetową, która przetwarza ogromną ilość danych i zajmuje dużo czasu?
Garbage Collector pobiera zbyt dużo czasu procesora
Teraz robię profilowanie mojej aplikacji i zauważyłem jedną bardzo złą rzecz na temat GC.
Po osiągnięciu pełnej wartości GC zatrzymuje cały proces na 30 - 40 sekund.
Zastanawiam się, czy jest jakiś sposób, aby to poprawić. Nie chcę talia mojego procesora tyle czasu tylko w GC. Poniżej znajdują się szczegóły, które mogą być użyteczne:
- używam Java 1.6.0.23
- moja aplikacja zajmuje pamięć 20 GB max.
- Pełny GC występuje po każdych 14 minutach.
- pamięci przed GC 20 GB po GC wynosi 7,8 PL
- Użycie pamięci CPU (to pokazano w menadżera zadań) wynosi 41 GB.
- Po zakończeniu procesu (JVM nadal działa) Używana pamięć 5 GB i wolna pamięć 15 GB.
* Określona * JVM, która jest używana i opcje pamięci, jeśli występują, muszą być opatrzone adnotacją w pytaniu. Uwzględnij także wszelkie wyniki profilowania i sposób ich uzyskania. –
Możesz okresowo sugerować, aby GC działał w strategicznie wybranych punktach w czasie, aby uzyskać więcej kolekcji, które trwają krócej. –
@pst Dodałem większość szczegółów, które zaobserwowałem. –