Vodič za Java Profilere

1. Pregled

Ponekad pisanje koda koji se samo izvodi nije dovoljno. Možda bismo željeli znati što se interno događa, poput načina na koji se memorija dodjeljuje, posljedice korištenja jednog pristupa kodiranja nad drugim, implikacije istodobnih izvršavanja, područja za poboljšanje izvedbe itd. Za to možemo koristiti profile.

Java Profiler je alat koji nadgleda konstrukcije i operacije bajt koda Java na razini JVM. Te konstrukcije koda i operacije uključuju stvaranje objekata, iterativne izvedbe (uključujući rekurzivne pozive), izvršavanja metoda, izvršavanja niti i zbirke smeća.

U ovom ćemo članku razgovarati o glavnim Java Profilerima: JProfiler, YourKit, Java VisualVM i Netbeans Profiler.

2. JProfiler

JProfiler je najbolji izbor za mnoge programere. S intuitivnim korisničkim sučeljem, JProfiler pruža sučelja za pregled performansi sustava, korištenje memorije, potencijalno curenje memorije i profiliranje niti.

Pomoću ovih podataka možemo lako znati što trebamo za optimizaciju, uklanjanje ili promjenu osnovnog sustava.

Evo kako izgleda sučelje JProfilera:

JProfiler pregledno sučelje sa značajkama

Kao i većina profilara, i ovaj alat možemo koristiti za lokalne i udaljene programe. To znači da je to moguće profilirajte Java programe koji se izvode na udaljenim računalima, a da na njih ne morate ništa instalirati.

JProfiler također pruža napredno profiliranje i za SQL i za NoSQL baze podataka. Pruža posebnu podršku za profiliranje baza podataka JDBC, JPA / Hibernate, MongoDB, Casandra i HBase.

Snimka zaslona ispod prikazuje JDBC sučelje za sondiranje s popisom trenutnih veza:

Pogled sondiranja baze podataka JProfiler

Ako želimo učiti o stablo poziva interakcije s našom bazom podataka i vidi veze koje mogu procuriti, JProfiler to lijepo rješava.

Live Memory je jedna značajka JProfilera koja nam to omogućuje pogledajte trenutnu upotrebu memorije u našoj aplikaciji. Možemo vidjeti upotrebu memorije za deklaracije objekata i instance ili za cijelo stablo poziva.

U slučaju stabla poziva za dodjelu, možemo odabrati prikaz stabla poziva živih objekata, predmeta prikupljenih smeća ili oboje. Također možemo odlučiti treba li ovo stablo dodjele biti za određenu klasu ili paket ili sve klase.

Zaslon ispod prikazuje upotrebu memorije uživo svih objekata s brojem primjera:

Pregled JProfiler žive memorije

Podržava JProfiler integracija s popularnim IDE-ima kao što su Eclipse, NetBeans i IntelliJ. Čak je i moguće kretanje od snimke do izvornog koda!

3. YourKit

YourKit Java Profiler radi na mnogo različitih platformi i pruža zasebne instalacije za svaki podržani operativni sustav (Windows, MacOS, Linux, Solaris, FreeBSD itd.).

Kao i JProfiler, YourKit ima osnovne značajke za vizualizaciju niti, zbirki smeća, upotrebe memorije i curenja memorije, uz podrška za lokalno i daljinsko profiliranje putem ssh tuneliranja.

Evo kratkog pregleda rezultata profiliranja memorije Tomcat poslužiteljske aplikacije:

Profiliranje memorije YourKit Java Profiler aplikacije poslužitelja Tomcat

YourKit također dobro dođe u ona vremena kada to želimo profil izbačene iznimke. Lako možemo otkriti koje su vrste iznimki izbačene i koliko se puta svaka iznimka dogodila.

YourKit ima zanimljivo Značajka profiliranja CPU-a koja omogućuje usmjereno profiliranje na određena područja našeg koda kao što su metode ili podstabla u nitima. Ovo je vrlo moćno jer omogućuje uslovno profiliranje kroz značajku što ako.

Slika 5 prikazuje primjer sučelja za profiliranje niti:

Slika 5. Sučelje za profiliranje niti YourKit Java Profiler

Možemo i mi profil SQL i NoSQL pozivi baze podataka uz YourKit. Omogućuje čak i prikaz stvarnih upita koji su izvršeni.

Iako ovo nije tehničko razmatranje, model dopuštanja licence YourKit čini ga dobrim izborom za višekorisničke ili distribuirane timove, kao i za kupnje s jednom licencom.

4. Java VisualVM

Java VisualVM je pojednostavljeni, ali robusni alat za profiliranje Java aplikacija. Prema zadanim postavkama ovaj je alat u paketu s Java Development Kitom (JDK). Njegov se rad oslanja na druge samostalne alate predviđene u JDK, kao što su JConsole, jstat, jstack, jinfo, i jmap.

Ispod možemo vidjeti jednostavno sučelje pregleda tekuće sesije profiliranja pomoću Jave VisualVM:

Profiliranje aplikacija Java poslužitelja lokalne VisualVM

Jedna zanimljiva prednost Java VisualVM-a je ta što možemo proširite ga na razvoj novih funkcionalnosti kao dodataka. Zatim te dodatke možemo dodati u ugrađeni centar za ažuriranje Java VisualVM-a.

Java VisualVM podržava lokalno i daljinsko profiliranje, kao i profiliranje memorije i CPU-a. Povezivanje s udaljenim aplikacijama zahtijeva pružanje vjerodajnica (ime hosta / IP i lozinka po potrebi) ali ne pruža podršku za ssh tuneliranje. Također možemo odabrati ili omogućiti profiliranje u stvarnom vremenu s trenutnim ažuriranjima (obično svake 2 sekunde).

Ispod možemo vidjeti izgled memorije Java aplikacije profilirane pomoću Java VisualVM:

Histogram hrpe memorije Java VisualVM

Pomoću značajke snimke Java VisualVM možemo napravite snimke sesija profiliranja za kasniju analizu.

5. NetBeans Profiler

NetBeans Profiler je u paketu s Oracleovim IDE-om za otvoreni izvor NetBeans.

Dok ovaj profiler dijeli puno sličnosti s Javom VisualVM, to je dobar izbor kada želimo da sve bude umotano u jedan program (IDE + Profiler).

Svi ostali prethodno opisani profilatori nude dodatke za poboljšanje integracije IDE-a.

Ispod snimke zaslona prikazan je primjer sučelja NetBeans Profiler:

Netbeans Profiler telemetrijsko sučelje

Netbeans Profiler je također dobar izbor za lagani razvoj i profiliranje. NetBeans Profiler pruža jedan prozor za konfiguriranje i kontrolu sesije profiliranja i prikazivanje rezultata. Daje jedinstvenu značajku znanja koliko se često događa odvoz smeća.

6. Ostali čvrsti profili

Ovdje se spominju Java Java Mission Control, New Relic i Prefix (od Stackify) - oni ukupno imaju manje tržišnog udjela, ali definitivno zaslužuju spomen. Na primjer, Stackifyjev prefiks izvrstan je lagan alat za profiliranje, pogodan za profiliranje ne samo Java aplikacija već i ostalih web aplikacija.

7. Zaključak

U ovom tekstu razgovarali smo o profiliranju i Java Profilers. Pogledali smo značajke svakog Profilera i ono što informira potencijalni izbor jednog nad drugim.

Dostupni su mnogi Java profilatori s nekima koji imaju jedinstvene karakteristike. Izbor Java Profilera koji ćemo koristiti, kao što smo vidjeli u ovom članku, uglavnom ovisi o odabiru alata programera, razini potrebne analize i značajkama Profilera.