adudczak visualvm

background image

Visual VM i VisualVM API

Adam Dudczak

adudczak (at) gmail.com

Poznań NetBeans Day

2 grudnia 2008

background image

Plan prezentacji

1

Wprowadzenie do VisualVM

2

VisualVM API - wtyczki

3

Podsumowanie i dodatkowe informacje

background image

Czym jest VisualVM?

Aplikacja stworzona w oparciu o NetBeans Platform

Począwszy od Java update 1.6 07, dostarczane razem z Sun JDK

VisualVM to projekt otwarty, którego kod dostępny jest na
licencji GPLv2

Aplikacja w ramach której zintegrowano istniejące narzędzia JDK

jinfo, jmap, jstack, jstat, jhat, jps
JConsole
NetBeans profiler

background image

Narzędzia diagnostyczne dostępne
w JDK

jps – lista procesów JVM, analog unix’owego polecenia ps

jinfo – podstawowe informacje o działającym procesach JVM

jstat – statystyki dotyczące działania GC, ładowania klas i
kompilacji

jstack – zrzut stanu wątków (nawet gdy JVM wisi)

jmap – zrzut zawartości sterty, zapis w formacie hprof

jhat – przeglądania zawartości zrzutu sterty

jconsole – zużycie pamięci, klient JMX i inne

background image

Przykład 1 : Wykorzystanie
narzędzi dostępnych w JDK

>jps
1234 jps
4296 Main --branding nb
>jstack 4296 >thread-dump.txt
>jmap -dump:format=b,file=heap.hprof 4296
>jhat -J-mx512m heap.hprof
Reading from heap.bin...
Dump file created Mon Oct 20 20:31:40 CEST 2008
Snapshot read, resolving...
...
Started HTTP server on port 7000
Server is ready.
> przegladarka http://localhost:7000

background image

Funkcje dostępne w VisualVM (1)

VisualVM integruje to co już jest dostępne:

Uzyskać podstawowe informacje o procesach Javy działających
lokalnie i zdalnie

Monitorować przebieg wykonania wątków danej aplikacji

Możliwość wykonania i zapisania zrzutu aktualnego stanu wątków
(ang. Thread dump)

Zrzut zawartości sterty (ang. Heap dump)

background image

Funkcje dostępne w VisualVM (2)

Możliwość porównania zużycia pamięci i stanu wątków w różnych
stadiach wykonania programu

Profiler – umożliwiający badanie utyliacji czasu procesora i
pamięci

W pełni funkcjonalny klient JMX

Pełna zgodność z API pluginów do JConsole (por. JTop)

Wizualizacja działania Garbage Collectora (Visual GC) i inne

background image

Co ze starszymi wersjami Javy?

Tabele dostępnych funkcji

Aplikacje lokalne

1.42

5.0

6.0

7.0

jvmstat

X

X

X

X

jmx

X

1

X

X

attach

X

X

Dostęp zdalny

1.42

5.0

6.0

7.0

jvmstat

2

X

X

X

X

jmx

3

X

X

X

attach

1

Wymaga ustawienia -Dcom.sun.management.jmxremote

2

Na zdalnej maszynie musi działać jstatd

3

Wymaga ustawienia
-Dcom.sun.management.jmxremote.port=numer

background image

JStat vs JMX vs Attach

funkcja

jvmstat

jmx

attach

wykrycie działającej aplikacji

X

X

monitoring

X

X

podgląd wątków

X

profiler

X

zrzut wątków

X

X

zrzut sterty

X

X

wywołanie GC

X

OOME

X

X

Własności systemowe

X

X

Argumenty JVM

X

X

Main class

X

background image

Przykład 2 : możliwości VisualVM

Funkcje znane z JConsole: podstawowe informacje,
monitorowanie działania

Thread Dump Analyzer

Heap Dump Analyzer (wczytanie heap.hprof z przykładu 1)

Czy możliwe jest wykonanie zdalnego zrzutu sterty?

NetBeans Profiler

Czy możliwy jest profilowanie aplikacji działącej na innej
maszynie?
Generowanie hierarchii wywołań

background image

Dwa słowa o uruchamianiu jstatd

jstatd jest częścią JDK 1.6

Przy próbie uruchomienia jstatd może pojawić się błąd :
Could not create remote object access denied

Problem z polityką wykorzystania tools.jar, co trzeba zrobić:

stworzyć plik tools.policy

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

uruchomić jstatd:

jstatd J-Djava.security.policy=tools.policy

trzeba również pamiętać aby uruchomić ten proces z poziomu tego
samego użytkownika co monitorowana aplikacja

background image

Uruchomienie profilera

Dla poprawnego działania profilera w przypadku JDK ¡ 1.6 06
należy uruchomić aplikacje z parametrem: -Xshare:off.

Przy pierwszym uruchomieniu profiler przeprowadzi kalibracje
wszystkie rzeczy optymalizujące szybkość procesora (np.
SpeedStep) powinny byc wyłączone.

Profiler używa metody (interfejs JVMTI)

redefineClass(Class[] classes, byte[][] newBC)

background image

Profilowanie aplikacji działających
w śrdowisku produkcyjnym

Czy można profilować zdalne aplikacje?

Profiler w wersji oryginalnej (z NetBeans IDE) umożliwia
przeprowadzenie takiej operacji
Na zdalnej maszynie trzeba zainstalować : Profiler Remote Pack

Spadek wydajności po uruchomieniu profilera od 60% do 40%

Mimo wykorzystania mechanizmu ograniczania liczby
modyfikowanych metod poprawa wydajności jest niewielka

background image

Rozszerzenie VisualVM

Najważniejsze punkty rozszerzeń to:

ApplicationType (1)

SingleDataSourceAction (2)

DataSource i
DataSourceDescription (3)

background image

Rozszerzenie VisualVM

DataSourceView i Pluggable-
DataSourceViewProvider (4)

DataSourceViewPlugin (5)

background image

Przykład 3 : Tworzymy pierwsze
rozszerzenie

Szablony i kreatory ułatwiające tworzenie rozszerzeń można pobrać
z http://plugins.netbeans.org/.

Tworzenie DataSourceView

Nasz własny ApplicationType

Java IDE Wars VisualVm plugin :)

background image

Java IDE Wars VisualVm plugin

Java IDE Wars VisualVm plugin został stworzony na bazie hitu
„Shootout” autorstwa Dawida Weissa.

http://www.cs.put.poznan.pl/dweiss/xml/projects/shootout/index.xml

background image

Podsumowanie - braki

Wydaje sie że jest techniczna mozliwość aby zintegrować opcje
robienia zdalnych zrzutów pamięci w głównym menu

(jmx: com.sun.managment.HotSpotDiagnostic.dumpHeap())

Brak możliwości wydawania zaawansowanych zapytań jak w jhat

(np. select s from j.l.String s where s.count = 1024)

Czy można poprawić wydajność profilera? (czas próbkowania)

Wsparcie dla Profiler Remote Pack

background image

Podsumowanie - zalety

Wszystko w jednym miejscu

Przyjemne, dobrze zrobione GUI

Sporo nowych wtyczek, łatwa aktualizacja

Dobrze udokumentowany proces tworzenia wtyczek

Na pewno warto o tym narzędziu pamiętać

background image

Czytanki

Strona projektu VisualVM – https://visualvm.dev.java.net

„Using VisualVM to find and resolve performance issue in
Liferay”
http://kanonbra.com/index.php/projects/
performance-testing/18-using-visualvm-on-liferay

„Profiling With VisualVM, Part 2” – http://blogs.sun.com/
nbprofiler/entry/profiling_with_visualvm_part_2

„JDK Tools and Utilities” http://java.sun.com/javase/
6/docs/technotes/tools/index.html

background image

Czytanki (2)

„Getting Started Extending VisualVM (Part 1)”
http://blogs.sun.com/geertjan/entry/getting_started_
extending_visualvm

i wszystkie następne częsci...

background image

Dziękuje za uwagę

Pytania ?

Adam Dudczak

adudczak (at) gmail.com


Document Outline


Wyszukiwarka

Podobne podstrony:
Lab 2 Visual Analyser oraz kompresje v2
ASP NET 2 0 Tworzenie witryn internetowych z wykorzystaniem C i Visual Basica aspntw
Visual Basic Przykładowe zadania , Studia i nauka, Visual Basic
Visual1
Programowanie w Visual?sic dla Excel
Visual?sic lekacje
Lab6, Visual Basic Lab 6a, Visual Basic Lab 3
Leksykon VISUAL BASIC, r00-05, Rozdział X
MS Visual C Ćwiczenia
Visual Basic Zdarzenia , Studia i nauka, Visual Basic
67 Audio and Visual System
Visual 5
Visualization Exercises
Visual3
visual methodologies chapter4 content analysis pages 1 5

więcej podobnych podstron