Panduan untuk Profilers Java

1. Gambaran keseluruhan

Kadang kala menulis kod yang hanya berjalan tidak mencukupi. Kami mungkin ingin mengetahui apa yang berlaku secara dalaman seperti bagaimana memori dialokasikan, akibat menggunakan satu pendekatan pengekodan daripada yang lain, implikasi pelaksanaan bersamaan, bidang untuk meningkatkan prestasi, dan lain-lain. Kita boleh menggunakan profiler untuk ini.

Java Profiler adalah alat yang memantau konstruksi dan operasi bytecode Java pada tingkat JVM . Pembinaan dan operasi kod ini merangkumi penciptaan objek, pelaksanaan berulang (termasuk panggilan berulang), pelaksanaan kaedah, pelaksanaan benang, dan pengumpulan sampah.

Dalam artikel ini, kita akan membincangkan Java Profilers utama: JProfiler, YourKit, Java VisualVM, dan Netbeans Profiler.

2. JProfiler

JProfiler adalah pilihan utama bagi banyak pembangun. Dengan UI yang intuitif, JProfiler menyediakan antara muka untuk melihat prestasi sistem, penggunaan memori, potensi kebocoran memori, dan pembuatan profil.

Dengan maklumat ini, kita dapat dengan mudah mengetahui apa yang kita perlukan untuk mengoptimumkan, menghilangkan, atau mengubah - dalam sistem yang mendasari.

Inilah rupa antara muka JProfiler:

Antara muka gambaran keseluruhan JProfiler dengan ciri

Seperti kebanyakan profiler, kita boleh menggunakan alat ini untuk aplikasi tempatan dan jauh. Ini bermaksud bahawa profil aplikasi Java yang dijalankan pada mesin jauh boleh dilakukan tanpa perlu memasang apa-apa di dalamnya .

JProfiler juga menyediakan profil lanjutan untuk pangkalan data SQL dan NoSQL . Ini memberikan sokongan khusus untuk membuat profil pangkalan data JDBC, JPA / Hibernate, MongoDB, Casandra, dan HBase.

Tangkapan skrin di bawah menunjukkan antara muka penyiasatan JDBC dengan senarai sambungan semasa:

Paparan probing pangkalan data JProfiler

Sekiranya kita berminat untuk mengetahui mengenai pokok interaksi dengan pangkalan data kami dan melihat sambungan yang mungkin bocor , JProfiler menangani ini dengan baik.

Memori Langsung adalah salah satu ciri JProfiler yang membolehkan kita melihat penggunaan memori semasa oleh aplikasi kita . Kita dapat melihat penggunaan memori untuk pengisytiharan dan kejadian objek atau untuk pohon panggilan penuh.

Dalam kes pohon panggilan peruntukan, kita dapat memilih untuk melihat pohon panggilan objek hidup, objek yang dikumpulkan sampah, atau keduanya. Kami juga dapat memutuskan apakah pokok peruntukan ini harus untuk kelas atau pakej tertentu atau semua kelas.

Skrin di bawah menunjukkan penggunaan memori langsung oleh semua objek dengan jumlah contoh:

Paparan memori langsung JProfiler

JProfiler menyokong penyatuan dengan IDE yang popular seperti Eclipse, NetBeans, dan IntelliJ. Bahkan mungkin untuk menavigasi dari snapshot ke kod sumber !

3. Kit Anda

YourKit Java Profiler berjalan di banyak platform yang berbeza dan menyediakan pemasangan berasingan untuk setiap sistem operasi yang disokong (Windows, MacOS, Linux, Solaris, FreeBSD, dll.).

Seperti JProfiler, YourKit mempunyai ciri inti untuk memvisualisasikan benang, pengumpulan sampah, penggunaan memori, dan kebocoran memori, dengan sokongan untuk profil lokal dan jauh melalui ssh tunneling .

Berikut adalah gambaran ringkas mengenai hasil profil memori aplikasi pelayan Tomcat:

Profil memori YourKit Java Profiler aplikasi pelayan Tomcat

YourKit juga berguna ketika kita ingin membuat profil pengecualian . Kita dapat mengetahui jenis pengecualian dengan mudah dan berapa kali setiap pengecualian berlaku.

YourKit mempunyai ciri profil CPU yang menarik yang membolehkan profil berfokus pada bidang tertentu kod kami seperti kaedah atau subtrees dalam utas. Ini sangat kuat kerana membolehkan profil bersyarat melalui ciri apa-jika.

Rajah 5 menunjukkan contoh antara muka profil benang:

Gambar 5. Antaramuka profil thread YourKit Java Profiler

Kami juga dapat memprofilkan panggilan pangkalan data SQL, dan NoSQL dengan YourKit. Ia bahkan memberikan pandangan untuk pertanyaan sebenar yang dijalankan.

Walaupun ini bukan pertimbangan teknikal, model pelesenan permis dari YourKit menjadikannya pilihan yang baik untuk pasukan berbilang pengguna atau diedarkan, dan juga untuk pembelian satu lesen.

4. Java VisualVM

Java VisualVM adalah alat profil yang disederhanakan namun mantap untuk aplikasi Java. Secara lalai, alat ini digabungkan dengan Java Development Kit (JDK). Pengoperasiannya bergantung pada alat mandiri lain yang disediakan di JDK, seperti JConsole , jstat , jstack , jinfo , dan jmap .

Di bawah ini, kita dapat melihat antara muka ikhtisar sederhana dari sesi profil yang sedang berlangsung menggunakan Java VisualVM:

Profil aplikasi pelayan tomcat tempatan Java VisualVM

Satu kelebihan menarik dari Java VisualVM adalah kita dapat memperluasnya untuk mengembangkan fungsi baru sebagai plugin . Kita kemudian dapat menambahkan plugin ini ke pusat kemas kini bawaan Java VisualVM.

Java VisualVM menyokong profil lokal dan jarak jauh , serta profil memori dan CPU. Menyambung ke aplikasi jauh memerlukan penyediaan kelayakan (nama host / IP dan kata laluan jika perlu) tetapi tidak memberikan sokongan untuk tunneling ssh . Kami juga boleh memilih untuk mengaktifkan profil masa nyata dengan kemas kini segera (biasanya setiap 2 saat).

Di bawah ini, kita dapat melihat pandangan memori aplikasi Java yang diprofilkan menggunakan Java VisualVM:

Histogram timbunan memori Java VisualVM

Dengan ciri snapshot Java VisualVM, kita dapat mengambil gambar sesi profil untuk analisis kemudian .

5. NetBeans Profiler

NetBeans Profiler digabungkan dengan NetBeans IDE sumber terbuka Oracle .

Walaupun profiler ini mempunyai banyak persamaan dengan Java VisualVM , itu adalah pilihan yang baik apabila kita mahu semuanya dibungkus dalam satu program (IDE + Profiler).

Semua profiler lain yang dibincangkan di atas menyediakan pemalam untuk meningkatkan integrasi IDE.

Tangkapan skrin di bawah menunjukkan contoh antara muka NetBeans Profiler:

Antara muka telemetri Netbeans Profiler

Netbeans Profiler juga merupakan pilihan yang baik untuk pengembangan dan profil ringan . NetBeans Profiler menyediakan satu tetingkap untuk mengkonfigurasi dan mengendalikan sesi profil dan memaparkan hasilnya. Ini memberikan ciri unik untuk mengetahui seberapa kerap pengumpulan sampah berlaku .

6. Profiler Pepejal Lain

Beberapa sebutan terhormat di sini adalah Java Mission Control, New Relic, dan Prefix (dari Stackify) - ini mempunyai pangsa pasar yang lebih sedikit secara keseluruhan, tetapi pasti, memang patut disebut. Sebagai contoh, Stackify's Prefix adalah alat profil ringan yang sangat baik, sangat sesuai untuk memprofil bukan sahaja aplikasi Java tetapi juga aplikasi web lain.

7. Kesimpulannya

Dalam penulisan ini, kami membincangkan profil dan Java Profilers. Kami melihat keistimewaan setiap Profiler dan apa yang memaklumkan kemungkinan pilihan satu daripada yang lain.

Terdapat banyak profiler Java yang tersedia dengan beberapa ciri khas. Pilihan mana profiler Java untuk digunakan, seperti yang telah kita lihat dalam artikel ini, sangat bergantung pada pemilihan alat pemaju, tahap analisis yang diperlukan, dan fitur profiler.