Download - Profiling v Javě
![Page 1: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/1.jpg)
Profiling v Javě
Richard LipkaDepartment of Computer Science and EngineeringFaculty of Applied SciencesUniversity of West Bohemia, Pilsen, Czech Republic
![Page 2: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/2.jpg)
> ReliSA
Možnosti
> Zachytávání událostí> JVM Tools Interface API
> Lze poslouchat libovolné události v programu / JVM a reagovat spuštěním vlastního programu
> Vzorkování> Aktuální stav VM a heapdump
> Instrumentace bytecode / programu> Doplnění sledovacích instrukcí
> Ručně> Vlastní instrumentace
![Page 3: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/3.jpg)
> ReliSA
Ruční měření
> Sledování času> currentTimeMilis() – čas v milisekundách
> nanoTime() – „čas“ v nanosekundách (ale trvá cca 20* déle), vlastní timer
> Vzorkování> Thread.getStackTrace() – kde jsem ve vlákně (lze i z konzole – jstack <pid>)
> Sledování paměti> freeMemory(), totalMemory(), maxMemory() – lze použít
za běhu programu
> Jmap a JHat – k dispozici v JRE, kompletní memory dump
> -XX: parametry (PrintClassHistogram, …)
![Page 4: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/4.jpg)
> ReliSA
VisualVM
>Součást NetBeans, existuje i samostatná verze a plugin do Eclipse
>Sleduje>Běh aplikace (stav vláken v čase)
>Profilování CPU (co se právě dělá, kde aplikace tráví čas)
>Profilování paměti (jaké objekty se vytváří)
![Page 5: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/5.jpg)
> ReliSA
VisualVM a NetBeans
> Integrováno podobně jako debugger> Lze vložit profilovací body
> Lze nastavit podmínky pro spouštění akcí> Snapshot systému> Memory dump
> Dokáže procházet a zpracovávat heap > Přehled všech tříd a instancí, počty instancí …
> Analýza referencí
> OQL jazyk pro hledání
select a from java.util.LinkedList awhere a.size > 10
![Page 6: Profiling v Javě](https://reader036.vdocuments.pub/reader036/viewer/2022082712/56813b63550346895da461a2/html5/thumbnails/6.jpg)
Děkuji za pozornost