2010-10-26 33 views
5

Tôi đang theo dõi tình trạng rò rỉ bộ nhớ rất khó khăn (hoặc nhiều khả năng bị bỏ quên bộ nhớ). Tôi làm như sau:Làm cách nào để diễn giải kết quả từ Phân bổ và Trình theo dõi VM trong Công cụ?

1) bắt đầu ứng dụng của tôi
2) nhận được đến một điểm mà các ứng dụng sẽ hiển thị các rò rỉ
3) bắt đầu công cụ bằng cách sử dụng 'phân bổ' lựa chọn
4) gắn với quá trình của tôi và bắt đầu ghi
5) có một heapshot ban đầu
6) có một ảnh chụp ban đầu với VM tracker
7) tái tạo các bước mà làm cho bộ nhớ để tăng
8) mất thêm heapshot
9) mất thêm ảnh chụp với VM người theo dõi

Nếu tôi thực hiện các bước này, tôi thấy kết quả không thực sự hợp lý. Tôi hy vọng rằng tôi đang thiếu một số thông tin về cách thức các công cụ này hoạt động. Ví dụ, tôi biết rằng công cụ 'rò rỉ' không theo dõi TẤT CẢ các loại phân bổ bộ nhớ (ví dụ ứng dụng carbon). Ứng dụng của tôi là một ứng dụng di sản khổng lồ có thể có mã phân bổ lạ trong một số hệ thống con ngày tháng mà tôi không quen thuộc. Điều đó nói rằng, đây là những gì tôi thấy:

  • trong ảnh chụp ban đầu của VM theo dõi khi tôi nhìn vào tóm tắt, loại MALLOC_SMALL là khá nhỏ ở khoảng 72MB (kích thước ảo)
  • trong ảnh chụp thứ hai, sử dụng MALLOC_SMALL đã phát triển đến 224MB (kích thước lại ảo)
  • trong heapshot thứ hai, nó nói với tôi những heapgrowth là 45MB

Vậy làm thế nào có thể MALLOC_SMALL tăng từ 72MB đến 224MB, nhưng heapgrowth chỉ 45MB? Công cụ phân bổ có thiếu thứ gì đó mà VMTracker đang ghi không?

Hỗ trợ thêm rằng tôi thiếu thứ gì đó trong công cụ Phân bổ ... nếu tôi xem các khu vực MỚI được liệt kê trong MALLOC_SMALL (những vùng không có trong ảnh chụp nhanh đầu tiên, nhưng ở vị trí thứ hai), các địa chỉ đó phải tương ứng với các trang được phân bổ và chiếm 72MB -> 224MB, đúng không? Vì vậy, sau đó, tôi nhớ phạm vi địa chỉ cho vùng đó (ví dụ: 0x79000000-0x7b000000) và quay lại công cụ Phân bổ và sắp xếp danh sách 'Tất cả các đối tượng' theo địa chỉ. Sau đó, tôi tìm địa chỉ trong phạm vi đó. Tuy nhiên, tôi chỉ thấy 4 phân bổ chỉ chiếm 4KB ?! 32MB khác mà máy theo dõi VM được báo cáo ở khu vực đó ở đâu?

Bất kỳ trợ giúp nào sẽ được đánh giá cao .... Tôi hy vọng đó là điều cơ bản về cách các công cụ này hoạt động mà tôi không hiểu.

Trả lời

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