Útmutató a Java Profilerekhez

1. Áttekintés

Előfordul, hogy a csak futó kód írása nem elég. Érdemes tudni, hogy mi folyik belsőleg, például a memória felosztásának módja, az egyik kódolási megközelítés mással történő alkalmazásának következményei, az egyidejű végrehajtások következményei, a teljesítmény javítását célzó területek stb. Ehhez használhatunk profilokat.

A Java Profiler olyan eszköz, amely JVM szinten figyeli a Java bytecode konstrukciókat és műveleteket. Ezek a kódkonstrukciók és műveletek magukban foglalják az objektum létrehozását, az iteratív végrehajtásokat (beleértve a rekurzív hívásokat is), a módszerek végrehajtását, a szál végrehajtásait és a szemétgyűjteményeket.

Ebben a cikkben a fő Java profilokat tárgyaljuk: JProfiler, YourKit, Java VisualVM és a Netbeans Profiler.

2. JProfiler

A JProfiler sok fejlesztő számára a legjobb választás. Az intuitív kezelőfelülettel a JProfiler interfészeket kínál a rendszer teljesítményének, a memóriahasználatnak, a lehetséges memóriaszivárgások és a szálprofilok megtekintéséhez.

Ezekkel az információkkal könnyen megtudhatjuk, mit kell optimalizálnunk, megszüntetnünk vagy megváltoztatnunk - az alaprendszerben.

Így néz ki a JProfiler kezelőfelülete:

JProfiler áttekintő felület funkciókkal

A legtöbb profilozóhoz hasonlóan ezt az eszközt helyi és távoli alkalmazásokhoz is használhatjuk. Ez azt jelenti, hogy lehetséges távoli gépeken futó profilos Java alkalmazások anélkül, hogy bármit is telepítenie kellene rájuk.

A JProfiler is nyújt fejlett profilalkotás mind az SQL, mind a NoSQL adatbázisokhoz. Speciális támogatást nyújt a JDBC, JPA / Hibernate, MongoDB, Casandra és HBase adatbázisok profilozásához.

Az alábbi képernyőkép a JDBC szondázási felületet mutatja az aktuális kapcsolatok listájával:

JProfiler adatbázis szondázási nézet

Ha szívesen megismerjük a hívja meg az adatbázisunkkal való interakciók fáját és nézd az esetlegesen kiszivárgott kapcsolatok, A JProfiler ezt szépen kezeli.

Az élő memória a JProfiler egyik jellemzője, amely lehetővé teszi számunkra lásd alkalmazásunk aktuális memóriahasználatát. Megtekinthetjük az objektumdeklarációk és példányok vagy a teljes hívásfa memóriahasználatát.

A kiosztási hívásfa esetén választhatjuk, hogy megtekintjük-e az élő objektumok, a szemétbe gyűjtött objektumok vagy mindkettő hívásfáját. Azt is eldönthetjük, hogy ennek az allokációs fának egy adott osztályra vagy csomagra vagy az összes osztályra vonatkoznia kell-e.

Az alábbi képernyőn látható az objektumok élő memóriahasználata, példányszámmal:

JProfiler élő memória nézet

A JProfiler támogatja integráció a népszerű IDE-kkel mint például az Eclipse, a NetBeans és az IntelliJ. Még az is lehetséges navigáljon pillanatképből a forráskódba!

3. YourKit

A YourKit Java Profiler sok különböző platformon fut, és külön telepítéseket biztosít minden támogatott operációs rendszerhez (Windows, MacOS, Linux, Solaris, FreeBSD stb.).

A JProfilerhez hasonlóan a YourKit is rendelkezik a szálak, a szemétgyűjtemények, a memóriahasználat és a memóriaszivárgások vizualizálásával, helyi és távoli profilalkotás támogatása az ssh alagút segítségével.

Itt egy rövid áttekintés a Tomcat szerver alkalmazás memóriaprofilozásának eredményeiről:

YourKit Java Profiler memóriaprofil készítése a Tomcat szerver alkalmazásról

A YourKit akkor is jól jön, amikor szeretnénk profilba dobott kivételek. Könnyen megtudhatjuk, hogy milyen típusú kivételeket vetettek be, és hányszor fordultak elő egyes kivételek.

A YourKit-nek érdekes CPU-profilozási funkció, amely lehetővé teszi a kódolásunk egyes területeire történő koncentrált profilalkotást mint például módszerek vagy részfák szálakban. Ez nagyon hatékony, mivel lehetővé teszi a feltételes profilalkotást a mi lenne, ha funkciója révén.

Az 5. ábra a szálprofil interfész példáját mutatja:

5. ábra: A YourKit Java Profiler szálprofil felület

Azt is megtehetjük profilú SQL és NoSQL adatbázis hívások a YourKit-tel. Még a tényleges végrehajtott lekérdezések megtekintését is biztosítja.

Noha ez nem technikai szempont, a YourKit engedélyező licencmodellje jó választást tesz többfelhasználós vagy elosztott csapatok, valamint egyszeri licencek vásárlásához.

4. Java VisualVM

A Java VisualVM egy egyszerűsített, mégis robusztus profilalkotó eszköz a Java alkalmazásokhoz. Alapértelmezés szerint ez az eszköz a Java fejlesztőkészlettel együtt (JDK). Működése a JDK által biztosított más önálló eszközökre támaszkodik, mint pl JConsole, jstat, jstack, jinfo, és jmap.

Az alábbiakban egy egyszerű áttekintő felületet láthatunk a Java VisualVM használatával folyamatban lévő profilalkotási munkamenetről:

Java VisualVM helyi tomcat kiszolgáló alkalmazás profilozása

A Java VisualVM egyik érdekes előnye, hogy tudjuk bővítse ki új funkciók fejlesztéseként bővítményként. Ezután hozzáadhatjuk ezeket a bővítményeket a Java VisualVM beépített frissítési központjához.

A Java VisualVM támogatja helyi és távoli profilalkotás, valamint a memória és a CPU profilozása. A távoli alkalmazásokhoz való csatlakozáshoz hitelesítő adatok megadása szükséges (gazdagépnév / IP és szükség esetén jelszó) de nem nyújt támogatást az ssh alagútépítéshez. Választhatjuk az engedélyezést is valós idejű profilalkotás azonnali frissítésekkel (általában 2 másodpercenként).

Az alábbiakban láthatjuk a Java VisualVM használatával profilozott Java-alkalmazások memória kilátásait:

Java VisualVM memória halom hisztogramja

A Java VisualVM pillanatkép funkciójával megtehetjük készítsen pillanatképeket a profilalkotásokról későbbi elemzés céljából.

5. NetBeans Profiler

A NetBeans Profiler az az Oracle nyílt forráskódú NetBeans IDE csomagjával együtt.

Míg ez a profilozó sok hasonlóságot mutat a Java VisualVM-mel, akkor jó választás, ha mindent egy programba akarunk csomagolni (IDE + Profiler).

Az összes többi, a fentiekben tárgyalt profilozó beépülő modulokat biztosít az IDE-k integrációjának javításához.

A képernyőkép alatt látható egy példa a NetBeans Profiler felületre:

Netbeans Profiler telemetriai felület

A Netbeans Profiler szintén a jó választás könnyű fejlesztéshez és profilalkotáshoz. A NetBeans Profiler egyetlen ablakot biztosít a profilalkotás konfigurálásához és vezérléséhez, valamint az eredmények megjelenítéséhez. A tudás egyedülálló tulajdonságát adja milyen gyakran történik a szemétszállítás.

6. Egyéb szilárd profilalkotók

Néhány megtisztelő említés a Java Mission Control, az új relikvia és az előtag (a Stackify-tól) - ezek összességében kisebb piaci részesedéssel bírnak, de mindenképpen megemlítést érdemelnek. Például a Stackify Prefix kiváló könnyű profilkészítő eszköz, amely nemcsak Java alkalmazások, hanem más webalkalmazások profilozására is kiválóan alkalmas.

7. Következtetés

Ebben az írásban megvitattuk a profilalkotást és a Java Profiler-eket. Megvizsgáltuk az egyes Profiler jellemzőit, és azt, hogy mi alapján lehet választani az egyiket a másik felett.

Sok Java profiloló áll rendelkezésre, amelyek közül néhány egyedi jellemzőkkel rendelkezik. A Java profilkezelő választása, amint azt ebben a cikkben láthattuk, leginkább a fejlesztő eszközeinek megválasztásától, a szükséges elemzési szinttől és a profilozó jellemzőitől függ.