Ú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.