profiling v javě
Post on 06-Jan-2016
31 Views
Preview:
DESCRIPTION
TRANSCRIPT
Profiling v Javě
Richard LipkaDepartment of Computer Science and EngineeringFaculty of Applied SciencesUniversity of West Bohemia, Pilsen, Czech Republic
> 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
> 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, …)
> 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áří)
> 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
Děkuji za pozornost
top related