Potrzebuję zmierzyć, ile pamięci zużywają moje testy JUnit.Sposoby mierzenia zużycia pamięci podczas wykonywania testów JUnit
Więc najbardziej oczywiste (ale nie wygodnym) sposobem jest uruchomienie JVM z argumentami jak „-Xms128m -Xmx512m” i śledzić, kiedy będę miał OutOfMemory błąd.
Drugi sposób polega na zażądaniu zrzutu sterty po wykonaniu wszystkich moich testów, a następnie użycia narzędzia Memory Analyzer Tool. Ale nie jest to przydatne przy każdym uruchomieniu testów.
Pożądana sposobem jest, powiedzmy, do logowania zużycie pamięci do pliku o takich wartościach jak maksymalnego zużycia pamięci, średnie zużycie, rozmów GC liczyć itd. Albo nawet narysować schemat, który pokaże jak pamięć została wykorzystana .
Pytanie brzmi, czy są jakieś narzędzia, metody lub narzędzia do tego? A może moje życzenia są nierzeczywiste i naiwne i nie ma sposobu na zebranie takich danych?
Testy działają w oparciu o IntelliJ Idea z JUnit4. Mogę używać dowolnego innego środowiska. Z góry dziękuję za radę!
dobrze, jeśli używasz jakiś serwer Linux czy Unix, łatwym sposobem byłoby wykonać powłokę, która monitoruje PID i wydrukuj rozmiar pamięci w określonych odstępach czasu. Będziesz musiał uruchomić program z niskim -Xms i wysokim -Xmx. W ten sposób nie monitorowałbyś dokładnego rozmiaru sterty obiektów, ale przynajmniej rzeczywistej konsumpcji twojego procesu. Innym pomysłem, który mi się przydarza, jest dowiedzieć się, w jaki sposób serwer aplikacji drukuje informacje GC do plików dziennika i sprawdzić, czy można skonfigurować konfigurację, aby wydrukować "szczegółowe informacje GC". Zwykle obejmuje to szczegółowe informacje, które można później zinterpretować w razie potrzeby. – Martin
http://www.jvmmonitor.org/ dla Eclipse, lub po prostu użyj jconsole, itp. –
Nie możesz po prostu użyć profilera, powiedzmy z Eclipse? –