2011-05-17 126 views
1

我正在使用IdeaBlade和DevExpress構建的WinForms應用程序...它看起來像DevExpress控件導致對象在內存中一直存在。我試圖找到什麼阻止垃圾收集器刪除,然後成功。WinForms應用程序內存泄漏

任何人都可以推薦一個分析應用程序,擅長尋找處理程序,等等在內存中持有一個項目?

我已經使用了AQTime 7 Pro和.Net Memory Profiler,但他們都沒有清楚說明是什麼導致了這個問題。

乾杯!

+0

您可以指定DevExpress控制什麼對象?他們是否連接到DevExpress控件?你是否嘗試過添加Finalize()覆蓋來查看對象是否實際上留下了內存? – Ryan 2011-05-17 22:18:18

+0

@minitech - 在這個階段,我在DevExpress.XtraGrid.GridControl上看起來不錯,但是每個使用任何DevExpress控件或對象的表單都有相同的問題。我注意到,用此控件打開窗體爲內存使用增加〜4mb。當您退出表單時,不會釋放內存。再次打開窗體,會爲內存增加4個MB。看看使用AQtime 7 Pro,它會顯示窗體,它是控件,而xtragrid綁定管理器仍然是內存中的對象,但它並不能解釋在哪裏存放它們。看來DevExpress可能是問題。 – 2011-05-17 23:42:20

+0

您可能想要注意,.NET垃圾收集器可以在任意時間收集未使用的內存,通常在感覺需要額外的內存或應用程序長時間閒置時收集未使用的內存,因此實​​際上可能沒有任何問題。嘗試創建幾千個表單,在每次創建後記錄內存使用情況,並查看是否有任何地方出現丟包。如果有的話,你可能沒有任何問題。 DevExpress控件可能只是簡單地加載一大組共享資源,如圖像等。 – Ryan 2011-05-18 01:05:16

回答

1

ANTS Memory Profiler從紅門可能會伎倆。

聲明:其他內存分析器可用。

+0

似乎並未與DevExpress一起玩。打開這個應用程序崩潰抱怨它無法找到DevExpress.dll。令人困惑,是的!我沒有想過爲什麼。 – 2011-05-18 03:41:18

0

dotTrace MemorydotTrace Performance相當有能力處理密集的GUI應用程序,其中的螞蟻探查器不太好。

dotTrace會逐行告訴你罪魁禍首。 dotTrace是由給我們ReSharper的JetBrains製造的。

+0

是否有dorTrace內存教程?我無法弄清楚如何解釋什麼是保持對象在內存中。 – 2011-05-19 03:48:20