Tôi có một ứng dụng WPF trong số những thứ khác hiển thị rất nhiều hình ảnh, lớn và nhỏ. Vấn đề của tôi là ứng dụng sử dụng rất nhiều bộ nhớ và tôi không thể biết được nó đến từ đâu.bộ nhớ của tôi đi đâu? số byte riêng lớn tính
Kịch bản, khi nhấn mạnh ứng dụng một số tôi nhận được biểu đồ này trong perfmon:
http://www.imagechicken.com/uploads/1244548604007097000.jpg
Dòng đen lớn là Process \ byte tư nhân và các dòng khác là các quầy CLR mem (một trong những hồng được Tổng byte cam kết)
trong số trong đồ thị là:
Private byte ~ 350 Mb
byte cam ~ 100 Mb
Tôi đã đào bới rất nhiều với WinDbg và các công cụ khác, và tất cả đều báo cáo rằng hoạt động ngăn xếp được quản lý (! Eeheap báo cáo tổng số chồng được quản lý khoảng 100 Mb)
Tôi đã tham gia các ứng dụng như LeakDiag, LDGrapher nhưng không tìm thấy gì cả.
Vì vậy, cuối cùng là câu hỏi của tôi, làm cách nào để tiếp tục tìm ra nơi bộ nhớ của tôi đang diễn ra?
Thậm chí chỉ mới bắt đầu ứng dụng sử dụng 100Mb theo byte đã cam kết nhưng 190Mb tính theo byte riêng.
Tài liệu tham khảo:
Tôi đã đọc rất nhiều về vấn đề này, trong số những người khác trên các trang web lớn:
Tess Ferrandez: http://blogs.msdn.com/tess/archive/2009/02/27/net-memory-leak-reader-email-are-you-really-leaking-net-memory.aspx
Rico Mariani: http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx
MSDN mag: http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
Cảm ơn đã trả lời cho đến nay. Vì vậy, để làm rõ, eeheap,! Dumpheap, gcroot vv tất cả các báo cáo những thứ tạo nên 100Mb - những gì tôi đang cố gắng để thoát khỏi là bộ nhớ khác - 250 Mb bổ sung. – andyhammar
Cập nhật - với VADUMP: Báo cáo "Tổng bộ làm việc" là 236 Mb, "Dữ liệu khác" là 196 Mb. Eeheap báo cáo "kích thước heap GC" tại 107336836. Sự khác biệt này là gì? – andyhammar
'Dữ liệu khác' bao gồm heap GC cùng với các dữ liệu khác :) Tôi không chắc chắn có gì khác trong đó, nhưng nó an toàn để giả sử dữ liệu thời gian chạy của nó yêu cầu của CLR. –