Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic
> ReliSA > 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 > 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 ) > 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 > 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 > 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 a where a.size > 10