Podejrzewam, że mamy poważny wyciek pamięci w naszym mostku połączenia ActiveMQ - widzimy typowe wzorce wycieków pamięci (aplikacja ładuje się dobrze, zwalnia, jeśli działa przez dłuższy czas lub jest restartowana w kółko przez krótkie okresy czasu). Poszukałem najlepszych sprawdzonych metod znajdowania wycieków pamięci Java i wielu programistów rezygnuje z tradycyjnych narzędzi, takich jak jhat/jmap zamiast nowego (er) jvisualvm
.Jak znaleźć wycieki pamięci za pomocą visualvm
Po uruchomieniu tego narzędzia (i spędzeniu kilku godzin na zapoznaniu się z jego samouczkiem), jestem w stanie wykonać migawki profilera dla procesora i pamięci.
Po prostu utknąłem w tym punkcie - jak analizować te migawki, aby zidentyfikować wyciek? Istnieje mnóstwo dokumentacji tam, w jaki sposób używać jvisualvm do tworzenia migawek, ale bardzo mało dokumentacji, jak je właściwie zrozumieć.
Z góry dziękuję.
Czy próbowałeś działa [FindBugs] (http : // findbugs.sourceforge.net) nad źródłem? Uważam, że jest to dość skuteczne w identyfikacji kodu, który może spowodować wycieki pamięci. – Jivings
Dzięki za sugestię - ale dwie rzeczy: (1) Ciągle mi powtarzano, że FindBugs jest dobre dla NullPointerExceptions, ale nie przecieki pamięci i, co ważniejsze, (2) naprawdę chcę zapoznać się z jvisualvm, więc chyba że jest to * wyraźnie * nie jest właściwym narzędziem do tej pracy, jestem zainteresowany, aby zobaczyć, jak jest on używany jako narzędzie diagnostyczne. Jeszcze raz dziękuję za dobrą sugestię! – IAmYourFaja
Jedna mała rzecz: Narzędzia/Wtyczki/Dostępne wtyczki - zainstaluj Visual GC - wtyczka pokazuje lepszy wykres twojej pamięci sterty i statusu GC. – coolcfan