w ,

FajneFajne Dobre!Dobre!

JVM – jak podejrzeć zmienne i wątki działające w aplikacji

Java Virtual Machine

JVM to maszyna wirtualna, która umożliwia na uruchomienie aplikacji napisanych w języku Java. Ponadto deweloperzy w ramach JDK dostają szereg bibliotek, które umożliwiają podejrzeć co znajduje się w jej środku.

Dwa podstawowe narzędzia jakie można znaleźć w katalogu z JDK  ..\Java\jdk1.8.0_201\bin to:

  • Oracle Java Mission Control
  • Java VisualVM

Oba narzędzia mają zbliżoną funkcjonalność. Jednakże Oracle Java Mission Control jest nowszym narzędziem. Java VisualVM przestaje już być wspierane. Zaprezentuje przykład wykorzystania obu narzędzi.

Java VisualVM

Aby uruchomić narzędzie należy przejść do katalogu z JDK wybrać bin i wystartować jvisualvm.exe

W prawej części interfejsu widoczne są wszystkie procesy JVM działające lokalnie. Wybierz i połącz się z którymś, aby uzyskać szczegółowe informacje na jego temat. Ja wybrałem proces JvmExample. Jest to proces aplikacji, która napisałem na potrzeby prezentacji.

Pojawią się zakładki, które umożliwiają sprawdzenie zużywanej pamięci, procesora. Między innymi jest też profiler, który umożliwia na tuning maszyny wirutalnej.

Zrzut pamięci – Heap Dump

Żeby sprawdzić jakie obiekty znajdują się w pamięci należy kliknąć PPM na proces a następnie wybrać Heap Dump. W oknie pojawią się wszelkie informacje na temat obiektów i zmiennych aplikacji. Jak prezentuje obrazek poniżej wszystko jest widoczne jak na tacy.

Można podpiąć się do dowolnego procesu (nawet zdalnie) i podejrzeć wszystkie wartości. Dlatego jest to jeden z argumentów mówiących dlaczego nie powinniśmy miedzy innymi haseł utrzymywać w kodzie.

Dalsze kroki

Jeśli temat Cię zaciekawił i jesteś ciekawy jak korzystać z drugiego narzędzia Oracle Java Mission Control oraz zobaczyć jakie jeszcze możliwości stwarzają nam te narzędzia to odsyłam Cię do mojego materiału wideo na ten temat:

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Domain Driven Design – krótki kurs #01

Jakie zadanie rekrutacyjne może Cię spotkać na rozmowie rekrutacyjnej?