ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน jVisualVM


158

VisualVM มีสองแท็บแยกต่างหากสำหรับการสุ่มตัวอย่างและการทำโปรไฟล์ ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน VisualVM คืออะไร?

คำตอบ:


182

Samplingหมายถึงการทิ้งเธรดจำนวนมากและวิเคราะห์การติดตามสแต็ก โดยทั่วไปแล้วจะเร็วกว่าไม่ต้องการการเปลี่ยนแปลงรันไทม์ในไบต์ของคุณ (ซึ่งอาจทำให้แตก) แต่ก็แม่นยำน้อยกว่าเช่นกัน

Profilingวิธีinstrumentingชั้นเรียนและวิธีของคุณเพื่อให้พวกเขา "รายงาน" เมื่อใดก็ตามที่พวกเขาจะวิ่ง วิธีนี้มีความแม่นยำมากกว่าเนื่องจากนับทุกการเรียกใช้ของวิธีการใช้เครื่องมือไม่ใช่เฉพาะสิ่งที่จับได้เมื่อทำการถ่ายโอนข้อมูลเสร็จสิ้น อย่างไรก็ตามการใช้เครื่องมือหมายความว่า bytecode ของชั้นเรียนของคุณมีการเปลี่ยนแปลงและสิ่งนี้อาจทำลายโปรแกรมของคุณ ที่จริงแล้วด้วยเหตุผลดังกล่าวการใช้การทำโปรไฟล์บนแอ็พพลิเคชันเซิร์ฟเวอร์ขนาดใหญ่ (เช่น JBoss หรือ WebLogic) มักจะทำให้ทุกอย่างตายหรือแขวน


2
หมายความว่าการทำโปรไฟล์มีความแม่นยำมากกว่าการสุ่มตัวอย่าง แต่จะต้องใช้ทรัพยากรเพิ่มขึ้นหรือไม่
Parag

10
ฉันพบว่าการสุ่มตัวอย่างนั้นแม่นยำกว่าทุกครั้งที่ฉันใช้เพื่อระบุวิธีการทำงานที่ไม่ดี ฉันเองไม่เคยใช้โปรไฟล์
Marquez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.