2013-01-15 43 views
5

Tôi đang cố gỡ lỗi lỗi permgen trong một ứng dụng. Tôi đang chạy VisualVM để cấu hình các ứng dụng và đã lấy một heapdump của ảnh chụp bộ nhớ.VisualVM - Tìm tất cả các tham chiếu đến một lớp

Tải ảnh chụp nhanh vào VisualVM để phân tích, tôi hiện có thể thấy trong danh sách lớp một số lớp xuất hiện nhiều lần, tất cả được liệt kê với 0 trường hợp, 0 size - Tôi chỉ mong đợi một trong các lớp này (có thể được liên kết với trình nạp lớp của nó)) - Có cách nào để xác định những gì vẫn còn giữ tài liệu tham khảo cho các lớp học không có trường hợp? Vui lòng sử dụng một công cụ khác nếu tôi chỉ có thể tải trong bãi chứa (.hprof) để phân tích những gì đang giữ tham chiếu.

Cảm ơn!

+0

Tôi đã sử dụng YourKit cho điều này trong quá khứ. Nó có thể tải một bãi chứa. Bạn có thể nhận được giấy phép eval miễn phí. –

Trả lời

3

Tôi sử dụng MAT cho các nội dung như thế này. Hoạt động tốt, ngay cả trên đống lớn.

+0

Cảm ơn - chỉ vấp khi đề xuất khác cho MAT cũng - đã được cài đặt trong Eclipse, vì vậy sẽ tải trong nhật ký để xem những gì tôi có thể tìm thấy. – rhinds

16

Vâng, nói "sử dụng MAT" không thực sự trả lời câu hỏi!

Để làm điều đó trong VisualVM, trong giao diện Trình đơn hoặc Cấu hình có một nút (trên cùng bên phải) có nhãn "Heap Dump". Nhấp vào đây, mở bộ phân tích heap. Trong tab "Lớp học", tất cả các lớp được tải sẽ được hiển thị. Ở phía dưới có một hộp tìm kiếm, nhập tên lớp mà bạn quan tâm, trong chế độ xem được lọc, hãy nhấp đúp vào lớp được đề cập.

Thao tác này sẽ mở chế độ xem trường hợp. Nhấn chuột phải vào một cá thể trong khung bên trái, và chọn "Hiển thị gần nhất GC Root" để tìm những gì đang tham chiếu đối tượng.

Barney

Các vấn đề liên quan