Perbedaan antara pengambilan sampel dan pembuatan profil di jVisualVM


158

VisualVM memiliki dua tab terpisah untuk pengambilan sampel dan profil. Apa perbedaan antara pengambilan sampel dan pembuatan profil di VisualVM?

Jawaban:


182

Samplingberarti mengambil banyak pembuangan ulir dan menganalisis jejak tumpukan. Ini biasanya lebih cepat, tidak memerlukan perubahan runtime di bytecode Anda (yang mungkin merusaknya), tetapi juga kurang akurat.

Profilingberarti menginstruksikan kelas dan metode Anda, sehingga mereka "melaporkan" kapan pun mereka dijalankan. Ini lebih akurat, karena menghitung setiap doa metode yang diinstrumentasi, tidak hanya yang tertangkap ketika dump dilakukan. Namun instrumentasi berarti bahwa bytecode kelas Anda diubah, dan ini dapat merusak program Anda. Sebenarnya, untuk alasan itu, menggunakan profil pada server aplikasi besar (seperti JBoss, atau WebLogic) sering menyebabkan semuanya mati atau hang.


2
Apakah ini berarti bahwa profiling lebih akurat daripada pengambilan sampel, tetapi akan membutuhkan lebih banyak sumber daya?
Parag

10
Saya telah menemukan bahwa Sampling lebih dari cukup akurat setiap kali saya menggunakannya untuk menunjukkan metode berkinerja buruk. Saya pribadi tidak pernah menggunakan profil.
Marquez
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.