2011-03-17 45 views
33

Tôi muốn biết nếu có cách nào để kiểm tra xem có bao nhiêu tham chiếu đối tượng Java. Theo như tôi có thể kiểm tra cách duy nhất để làm điều đó là sử dụng JVMTI thông qua một giao diện JNI. Có một giải pháp java thuần túy (không sử dụng thư viện gốc) để lấy thông tin này không?Có thể lấy số tham chiếu đối tượng không?

Chúng tôi đang phát triển một công cụ giáo dục cho hoạt động cấu trúc dữ liệu (được sử dụng với sinh viên thực hiện các thuật toán nhất định), vì vậy sẽ rất tuyệt nếu chúng ta có thể kiểm tra đối tượng "được giải phóng" theo cách không xâm phạm nhất (I) ´m cố gắng tránh buộc người dùng của công cụ này gọi một phương thức như ObjectReleased (objRef) để cập nhật hoạt ảnh cấu trúc dữ liệu cho việc loại bỏ phần tử hoặc thứ gì đó tương tự)

+2

Số lượng tham chiếu không được theo dõi trong JVM. Cách duy nhất để biết là đếm chúng. – Gabe

+1

Có một thư viện có thể được sử dụng để nhận thông báo khi một đối tượng được thu thập rác. Vui lòng tham khảo liên kết này để biết thêm chi tiết http://sourceforge.net/projects/gcradar/ –

+0

@AmrenduPandey, không chỉ đơn giản là "in đậm một số chữ" - đó không phải là cách thích hợp để cải thiện câu hỏi. Chỉnh sửa phải đáng kể, không chỉ là thay đổi định dạng. – Charles

Trả lời

12

Từ mô tả của bạn, có vẻ như bạn ít quan tâm về số lượng thực tế của tài liệu tham khảo hơn là chỉ đơn giản là biết khi nào một đối tượng đã được thu thập . Trong trường hợp này, bạn có thể sử dụng WeakReference hoặc PhantomReference để xác định khi một đối tượng được tham chiếu sẵn sàng để hoàn thành.

Xem:

Hy vọng điều này sẽ hữu ích.

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