5

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!

Ants Memory Snapshot

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.

enter image description here

+0

Bạn có thành phần WebBrowser được nhúng trong ứng dụng Silverlight của mình không? – kol

+0

Không, chúng tôi không sử dụng điều khiển WebBrowser. –

+0

Bạn sẽ không tạo ra nhiều WriteableBitmaps? –

Trả lời

1

Bạn đã thử CLR Profiler for Silverlight? Tôi đã sử dụng nó với một số thành công trong quá khứ để khắc phục sự cố bộ nhớ.

+0

Điều này trông giống như một công cụ phong nha nhưng nó không có vẻ được sử dụng nhiều trong hồ sơ bộ nhớ không quản lý. Tôi dường như không có bất kỳ vấn đề nào với phần được quản lý trong ứng dụng của tôi. Tôi dường như không thể tìm ra lý do tại sao nó tiếp tục tiêu thụ nhiều bộ nhớ không được quản lý nhiều hơn. –

+0

Điểm tốt về việc đó là sự cố với bộ nhớ * không được quản lý. –

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