2015-06-05 19 views
12

Tôi sử dụng Visual Studio để chụp nhanh bộ nhớ ứng dụng của mình.Cách đọc ảnh chụp nhanh bộ nhớ trong Visual Studio

Tôi có một số câu hỏi về việc hiểu dữ liệu tôi nhận được. Tôi sau khi chụp được ảnh chụp bộ nhớ, tôi lọc ra một lớp của mình, nói MyClassPanel. Tôi chỉ sử dụng MyClassPanel trong các tệp xmal của mình.

  1. lý do tại sao ‘Đường dẫn đến gốc’ cho MyClassPanel là ‘MyClassPanel [RefCount Handle, Count: 1]’? (ví dụ: cùng tên nhưng với một chuỗi [Xử lý RefCount ở cuối] và một giá trị Đếm khác), điều này có nghĩa là gì? Trong lớp khác, tôi lọc, tôi thấy 'Đường dẫn đến Gốc' là các tên lớp khác nhau.

  2. Tôi có 24 MyClassPanel (từ số đếm trong bảng trên cùng). Và trong cột ‘Số lượng tham chiếu’ trong bảng dưới cùng, khi tôi thêm chúng, chúng là 24.

Trường hợp đó luôn đúng? Tôi nghĩ ‘Count’ và ‘Count Count’ có nghĩa là những thứ khác nhau. Trong trường hợp này, chúng tăng lên. Điều này có nghĩa không?

enter image description here

+0

tôi đã tìm thấy bộ nhớ Redgate profiler là hữu ích hơn để theo dõi các vấn đề bộ nhớ vì nó sẽ cho bạn thấy đồ thị ví dụ duy trì. – CharithJ

Trả lời

3
  1. Các Paths để Root Xem lãm các tham chiếu đến kiểu này giữ nó khỏi bị thu gom rác thải. Vì lớp của bạn là một trang Xaml, tham chiếu giữ lớp còn sống là trình xử lý CLR cho trang Xaml. Những hiển thị như RefCount xử lý.

  2. Đếm và số tham chiếu thực sự không giống nhau. Đếm là số lượng cá thể, tham chiếu đếm số tham chiếu. Bởi vì mỗi cá thể trong trường hợp của bạn chỉ có một tham chiếu, điều đó có nghĩa là chúng tăng lên.

Để biết thêm thông: http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/20/using-visual-studio-2013-to-diagnose-net-memory-issues-in-production.aspx http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/net-memory-analysis-enhancements-in-visual-studio-2013.aspx

+0

Cảm ơn câu trả lời của bạn. Đối với # 1, mỗi bảng điều khiển có được giữ bởi trình xử lý CLR riêng của nó không? Hoặc 1 CLR xử lý giữ sống TẤT CẢ bảng điều khiển. Và ý nghĩa của 'Đếm' trong xử lý Ref Count là gì? – n179911

+0

Tôi đăng ảnh chụp màn hình cho hồ sơ bộ nhớ của mình. Tôi có một câu hỏi. Đối với # 2, tại sao bạn nói 'Bởi vì mỗi cá thể trong trường hợp của bạn chỉ có một tham chiếu, điều đó có nghĩa là chúng tăng lên.'?Không phải của tôi [Ref Count Handle, Count: 1] có 8 tham chiếu của 'MyClass Panel' và [Ref Count Handle, Count: 16] có 6 tham chiếu của 'MyClass Panel'? – n179911

+0

Ý nghĩa của 'Đếm' trong xử lý Ref Count, là số đếm tham chiếu của đối tượng com (https://en.wikipedia.org/wiki/Reference_counting). Tùy thuộc vào nếu trang được tải và tham chiếu nó vẫn còn sống –

0

Tôi không phải là một fan hâm mộ lớn của Visual Studio phân tích Snapshot. Có một vài biến chứng có sẵn nếu việc hoàn thành không được thực hiện đúng trước khi chụp ảnh. Tôi không chắc làm thế nào Visual Studio xử lý đó. Tuy nhiên, ảnh chụp bạn đã cung cấp cũng không có ý nghĩa gì đối với tôi.

Tôi khuyên bạn nên tải xuống trình thu thập bộ nhớ ANTS và điều tra điều này. Nó đi kèm với một thời gian thử nghiệm hợp lý. Bằng cách sử dụng đó, bạn sẽ có thể xem tất cả các tham chiếu đến từng cá thể bằng cách sử dụng nó là 'Biểu đồ lưu giữ'. Nó sẽ hiển thị cụ thể cho bạn các cá thể nào giữ tham chiếu đến các đối tượng của bạn và nó cũng sẽ cho bạn thấy đối tượng nào đã thực thi Dispose nhưng chưa gọi. Tôi đoán, nó sẽ cung cấp hỗ trợ nhiều hơn để tìm nguyên nhân gốc rễ cho vấn đề này.

Hãy nhìn vào bên dưới trang Walkthrough

http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/walkthrough http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

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