Panduan untuk Java Profilers

1. Ikhtisar

Terkadang menulis kode yang berjalan saja tidak cukup. Kita mungkin ingin mengetahui apa yang terjadi secara internal seperti bagaimana memori dialokasikan, konsekuensi menggunakan satu pendekatan pengkodean di atas yang lain, implikasi dari eksekusi bersamaan, area untuk meningkatkan kinerja, dll. Kita dapat menggunakan profiler untuk ini.

Java Profiler adalah alat yang memantau konstruksi dan operasi bytecode Java pada level JVM . Konstruksi dan operasi kode ini mencakup pembuatan objek, eksekusi berulang (termasuk panggilan rekursif), eksekusi metode, eksekusi thread, dan pengumpulan sampah.

Pada artikel ini, kita akan membahas Java Profiler utama: JProfiler, YourKit, Java VisualVM, dan Netbeans Profiler.

2. JProfiler

JProfiler adalah pilihan teratas bagi banyak pengembang. Dengan UI yang intuitif, JProfiler menyediakan antarmuka untuk melihat kinerja sistem, penggunaan memori, potensi kebocoran memori, dan profil utas.

Dengan informasi ini, kita dapat dengan mudah mengetahui apa yang kita butuhkan untuk mengoptimalkan, menghilangkan, atau mengubah - dalam sistem yang mendasarinya.

Inilah tampilan antarmuka JProfiler:

Antarmuka ikhtisar JProfiler dengan fitur

Seperti kebanyakan profiler, kita dapat menggunakan alat ini untuk aplikasi lokal dan jarak jauh. Ini berarti bahwa dimungkinkan untuk membuat profil aplikasi Java yang berjalan di mesin jarak jauh tanpa harus menginstal apa pun di dalamnya .

JProfiler juga menyediakan pembuatan profil lanjutan untuk database SQL dan NoSQL . Ini memberikan dukungan khusus untuk membuat profil database JDBC, JPA / Hibernate, MongoDB, Casandra, dan HBase.

Tangkapan layar di bawah ini menunjukkan antarmuka probing JDBC dengan daftar koneksi saat ini:

Tampilan probing database JProfiler

Jika kita tertarik untuk belajar tentang pohon panggilan interaksi dengan database kita dan melihat koneksi yang mungkin bocor , JProfiler menangani ini dengan baik.

Live Memory adalah salah satu fitur JProfiler yang memungkinkan kita untuk melihat penggunaan memori saat ini oleh aplikasi kita . Kita dapat melihat penggunaan memori untuk deklarasi objek dan instance atau untuk pohon panggilan lengkap.

Dalam kasus pohon panggilan alokasi, kita dapat memilih untuk melihat pohon panggilan dari objek langsung, objek yang dikumpulkan dari sampah, atau keduanya. Kita juga dapat memutuskan apakah pohon alokasi ini harus untuk kelas atau paket tertentu atau semua kelas.

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

Tampilan memori langsung JProfiler

JProfiler mendukung integrasi dengan IDE populer seperti Eclipse, NetBeans, dan IntelliJ. Bahkan mungkin untuk menavigasi dari snapshot ke kode sumber !

3. YourKit

YourKit Java Profiler berjalan pada banyak platform berbeda dan menyediakan penginstalan terpisah untuk setiap sistem operasi yang didukung (Windows, MacOS, Linux, Solaris, FreeBSD, dll.).

Seperti JProfiler, YourKit memiliki fitur inti untuk memvisualisasikan utas, pengumpulan sampah, penggunaan memori, dan kebocoran memori, dengan dukungan untuk profil lokal dan jarak jauh melalui terowongan ssh .

Berikut sekilas hasil profil memori dari aplikasi server Tomcat:

YourKit Java Profiler memory profiling dari aplikasi server Tomcat

YourKit juga berguna saat kita ingin membuat profil pengecualian . Kita dapat dengan mudah mengetahui jenis pengecualian apa yang dilemparkan dan berapa kali setiap pengecualian terjadi.

YourKit memiliki fitur profil CPU menarik yang memungkinkan pemrofilan terfokus pada area tertentu dari kode kami seperti metode atau subpohon di utas. Ini sangat kuat karena memungkinkan pembuatan profil bersyarat melalui fitur bagaimana-jika.

Gambar 5 menunjukkan contoh antarmuka profil-thread:

Gambar 5. Antarmuka profil thread YourKit Java Profiler

Kami juga dapat membuat profil SQL, dan panggilan database NoSQL dengan YourKit. Ia bahkan menyediakan tampilan untuk kueri aktual yang dieksekusi.

Meskipun ini bukan pertimbangan teknis, model lisensi permisif YourKit menjadikannya pilihan yang baik untuk tim multi-pengguna atau terdistribusi, serta untuk pembelian lisensi tunggal.

4. Java VisualVM

Java VisualVM adalah alat pembuatan profil yang disederhanakan namun kuat untuk aplikasi Java. Secara default, alat ini dibundel 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 antarmuka ikhtisar sederhana dari sesi pembuatan profil yang sedang berlangsung menggunakan Java VisualVM:

Pembuatan profil aplikasi server lokal tomcat Java VisualVM

Satu keuntungan menarik dari Java VisualVM adalah kita dapat mengembangkannya untuk mengembangkan fungsionalitas baru sebagai plugin . Kami kemudian dapat menambahkan plugin ini ke pusat pembaruan bawaan Java VisualVM.

Java VisualVM mendukung profil lokal dan jarak jauh , serta memori dan profil CPU. Menghubungkan ke aplikasi jarak jauh memerlukan pemberian kredensial (nama host / IP dan kata sandi jika diperlukan) tetapi tidak memberikan dukungan untuk ssh tunneling . Kami juga dapat memilih untuk mengaktifkan pembuatan profil waktu nyata dengan pembaruan instan (biasanya setiap 2 detik).

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

Histogram heap memori VisualVM Java

Dengan fitur snapshot dari Java VisualVM, kita dapat mengambil snapshot dari sesi pembuatan profil untuk analisis selanjutnya .

5. NetBeans Profiler

NetBeans Profiler dibundel dengan IDE NetBeans open source Oracle .

Meskipun profiler ini memiliki banyak kesamaan dengan Java VisualVM , ini adalah pilihan yang baik jika kita ingin semuanya dikemas dalam satu program (IDE + Profiler).

Semua profiler lain yang dibahas di atas menyediakan plugin untuk meningkatkan integrasi IDE.

Tangkapan layar di bawah ini menunjukkan contoh antarmuka NetBeans Profiler:

Antarmuka telemetri Netbeans Profiler

Netbeans Profiler juga merupakan pilihan yang baik untuk pengembangan dan pembuatan profil ringan . NetBeans Profiler menyediakan satu jendela untuk mengonfigurasi dan mengontrol sesi pembuatan profil dan menampilkan hasilnya. Ini memberikan fitur unik untuk mengetahui seberapa sering pengumpulan sampah terjadi .

6. Solid Profilers Lainnya

Beberapa sebutan terhormat di sini adalah Java Mission Control, New Relic, dan Prefix (dari Stackify) - ini memiliki pangsa pasar yang lebih sedikit secara keseluruhan, tetapi yang pasti, patut disebutkan. Misalnya, Stackify's Prefix adalah alat pembuatan profil ringan yang sangat baik, sangat cocok untuk membuat profil tidak hanya aplikasi Java tetapi juga aplikasi web lainnya.

7. Kesimpulan

Dalam artikel ini, kita membahas pembuatan profil dan Java Profilers. Kami melihat fitur dari setiap Profiler dan apa yang menginformasikan pilihan potensial satu sama lain.

Ada banyak profiler Java yang tersedia dengan beberapa memiliki karakteristik unik. Pilihan Java profiler yang akan digunakan, seperti yang telah kita lihat di artikel ini, sebagian besar bergantung pada pilihan alat pengembang, tingkat analisis yang diperlukan, dan fitur profiler.