我有一個silverlight應用程序,當窗體打開時它使用近17mb但是當我關閉窗體時它釋放任何內存。我正在處理所有的變量和對象,但GC不會釋放任何東西。當關閉表單時,我也在運行時刪除了所有的控件。 當我與螞蟻內存分析器驗證。在那裏它顯示爲NativeObjectSafeHandle 196440,它是可以放置的最大的一個,第二大的是UnmanagedMemoryStream。如何釋放Silverlight控件在關閉窗體上使用的內存
在內存分析器中,它顯示了很多silverlight內部引用,iam不能像樣式,system.windows.controls和資源一樣處理它們。即使我清理form.resources.clear()。
請建議我釋放內存。
感謝 克里希納
你怎麼稱呼GC.SuppressFinalize?任何非託管你打電話處置模式正確嗎?資源使用? NativeObjectSafeHandle是Microsoft.Internal命名空間中的.NET Framework內容,您不必擔心GC處理它。 更多關於這方面的更多信息關於分析silverlight中的內存http://blogs.msdn.com/b/slperf/archive/2010/08/19/analyzing-silverlight-memory-usage-part-1-obtaining -measurements.aspx – AllSpark 2014-09-09 10:56:46
Yea ..i已經調用GC.SuppressFinalize。我們有一個內存泄漏問題。在開放的形式它使用近15 MB,並在關閉後釋放大約5至7 Mb。我已將所有對象置於Dispose方法中。 是否有可能釋放它在表單加載約15 Mb中使用的總內存。 ?? 如果它沒有釋放總內存,這是否意味着我們在應用程序中有內存泄漏? – Krishna 2014-09-14 15:21:19
自從CLR處理這些東西以來,您幾乎從不必擔心.NET中託管內存的釋放問題。垃圾收集器在他想要的時候收集這些物體。終結者只需要非託管資源。換句話說,你不必擔心那些自CLR發佈以來就沒有發佈的內容。 我認爲以下視頻解釋這個過程中更好 (跳轉至0.45視頻) http://www.youtube.com/watch?v=MEVeurJtiW8 http://www.youtube.com/watch?v = cV8YJqc37ww – AllSpark 2014-09-23 00:13:14