2009-04-15 33 views

Trả lời

3

Tôi cho rằng bạn cần xem xét bằng cách sử dụng hồ sơ. Hoặc cái gì đó sử dụng giao diện thiết bị đo đạc.

Không chắc chắn nó ổn định như thế nào, nhưng có BTrace, là loại phiên bản Java của DTrace.

BTrace là một công cụ theo dõi động, an toàn cho nền tảng Java. BTrace có thể được sử dụng để tự động theo dõi một chương trình Java đang chạy. BTrace tự động hóa các lớp của ứng dụng đích để chèn mã truy tìm ("dò tìm bytecode"). Mã truy tìm được thể hiện bằng ngôn ngữ lập trình Java.

Nếu bạn đang làm điều này trên máy phát triển và số sự kiện (tài nguyên được tải) không quá thường xuyên, bạn cũng có thể chỉ đặt điểm ngắt trong trình gỡ lỗi.

+0

liên kết đã chết –

+0

@FastSnail: có vẻ như họ đã chuyển sang Github. Đã cập nhật liên kết. – Thilo

2

Tài nguyên được cung cấp dưới dạng URL s. Vì vậy, tôi đoán để làm điều đó trong "tinh khiết" Java: Cài đặt một tuỳ chỉnh ClassLoader sao chép URL s vào một phiên bản với một tùy chỉnh URLStreamHandler. Đặt mã theo dõi của bạn trong trình xử lý luồng và chuyển tiếp tới mã gốc.

1

Trong môi trường Linux bạn có thể thử:

lsof -p <jvm pid> 

Nó sẽ cung cấp cho bạn một danh sách với các mô tả được sử dụng bởi các chương trình liên quan đến việc pid quy định.

More Info

+2

Vấn đề là nhiều tài nguyên có thể được tải từ một tệp jar duy nhất, chỉ có thể mở một lần. – erickson

+0

Tôi đồng ý, trong trường hợp đó tôi nghĩ tùy chọn tốt nhất là đi với giải pháp ClassLoader –

2

Bạn có thể sử dụng InTrace để cụ các lớp Classloader mà làm bốc.

Đối với Sun JVM, tôi sẽ đề nghị sử dụng các mẫu sau Bao gồm theo dõi lớp học thích hợp:

  • ClassLoader
  • URLClassPath
  • Loader
1

Có tồn tại một vài kỹ thuật để gỡ lỗi sự cố tải lớp học. Dưới đây là các trang trình bày tốt từ Những người sáng tạo JRebel tóm tắt những kỹ thuật sau: Do you really get class loaders?

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