Tôi có một ứng dụng Silverlight khá đơn giản, gần đây chúng tôi đã có báo cáo từ người dùng ứng dụng bị treo sau vài giờ sử dụng (4+). Chúng tôi bắt đầu đào sâu vào ứng dụng và nhận thấy rằng phần không được quản lý bộ nhớ đang được ứng dụng sử dụng bắt đầu rất cao và tiếp tục phát triển không được kiểm soát. Các heap khác dường như được quản lý tốt. Tôi đã thực hiện rất nhiều nghiên cứu và thậm chí đã đi xa như gỡ bỏ tất cả các hình ảnh từ ứng dụng của tôi và bộ nhớ không được quản lý tiếp tục phát triển.Tại sao ứng dụng Silverlight của tôi sử dụng rất nhiều bộ nhớ không được quản lý?
Tôi chỉ bối rối vào thời điểm này là những gì chính xác là tiêu thụ tất cả các bộ nhớ không quản lý trong ứng dụng của tôi và những gì tôi có thể làm về nó. Đây là ảnh chụp nhanh ứng dụng của tôi sau khi tải ban đầu, vì bạn có thể thấy nó đã sử dụng hơn 100MB không gian bộ nhớ chưa được quản lý. Tôi chỉ tìm kiếm bất kỳ hướng dẫn nào ở đây về những đối tượng có thể nằm trong bộ nhớ chưa được quản lý và phải làm gì để giảm số lượng bộ nhớ không được quản lý mà ứng dụng của tôi đang sử dụng. Cảm ơn!
Tôi đã chụp một ảnh chụp hoặc hai bằng cách sử dụng NET Memory Profiler và nó xuất hiện rằng Kernel-HeapMemory là đoạn lớn nhất. Không chắc chắn nếu điều này giúp nhiều nhưng tôi nghĩ rằng tôi sẽ đăng nó anyway.
Bạn có thành phần WebBrowser được nhúng trong ứng dụng Silverlight của mình không? – kol
Không, chúng tôi không sử dụng điều khiển WebBrowser. –
Bạn sẽ không tạo ra nhiều WriteableBitmaps? –