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?

Parag
sumber

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.

npe
sumber
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