2015-04-22 1021 views
0

這個問題似乎與我的程序部分是分開的,我在WPF窗口中託管了Winform控件。在WPF/Winform應用程序中內存佔用不斷增加

向用戶呈現X行數,並且可以單擊任意行上的編輯以調出另一個窗口(< <這是其中包含Winform控件的窗口)。

每次進行新的選擇並加載新的編輯窗口時,內存使用量將在1到4兆之間上升。我已經嘗試了將該窗口關閉時所有可以放置的對象都設置爲null,但它沒有任何區別。

只有這個窗口會導致內存一直上升,永遠不會回落。即使我關閉除主窗口以外的所有內存,內存佔用仍保留在原來的位置。

+5

這可能發生的原因有很多。你是否根據需要分離事件處理程序?你正在處理一次性實例嗎? –

+0

我正在處理Dispose()可用的東西。使用'= null'做一些其他的事情。確保事件處理程序分離的最佳方法是什麼? – Justin

+0

Worm窗口關閉後垃圾收集器不一定會運行。只有在感覺需要時纔會運行。你是否強制使用gc(例如使用PerfView)來查看內存是否下降? – user783836

回答

2

最簡單的解決方案是在打開窗口之前和之後查看內存的內存快照,並查看分配了哪個新對象。例如,您可以使用內存分析器dotMemory來完成此操作。

此外,在dotMemory中,您可以自動查看哪些事件處理程序泄漏。

0

Alexey已經說過我會如何解決這個問題。對內存進行分析可以顯示程序中的很多問題。

Microsoft提供了兩個可用於此目的的工具。一個是CLR Profiler,另一個是Performance Analysis Tool,它也包含內存CLR內存信息。我會和這兩位的前者一起去。

相關問題