我已經使用Visual Studio .NET構建了一個應用程序,它工作正常。應用程序使用超過2-3小時後,它開始變慢,我不知道爲什麼。我用GC.Collect();
來解決內存泄漏問題,但現在我有了新的問題。 有誰知道解決方案?從應用程序中獲得緩慢
回答
如果你真的有內存泄漏,只是打電話GC.Collect()
對你沒好處。 GarbageCollector只能收集那些不再被別人引用的對象。
如果你沒有正確地清理你的對象,GC將不會收集任何東西。
當內存消耗處理,你應該認真考慮以下模式:
弱活動(MSDN Documentation here) 如果你從事件沒有退訂,訂閱對象將永遠不會被釋放到垃圾收集。
GC.Collect()
將不是刪除這些對象,他們會混亂你的記憶。落實
IDisposable
接口(MSDN documentation here) (我強烈建議閱讀本ducumentation因爲我已經見過很多錯誤的實現。) 你應該用你總是免費資源。請致電Dispose()
對每個對象提供吧!這同樣適用於流。每個對象總是致電
Close()
提供此。要使點2和3更容易,您可以使用
using
塊。 (MSDN documentation here) 只要這些代碼塊超出範圍,它們就會自動在給定對象上調用適當的Dispose()
或Close()
方法。這是相同的,但更方便,因爲使用了try... finally
組合。
與調試和發佈有什麼高的區別,因爲我在調試中進行了部署?當我在釋放模式下建立我的設置時速度更快嗎? –
一般來說,RELEASE模式下的應用程序比DEBUG模式稍快,因爲在DEBUG模式下,有很多花樣的東西在幕後進行,在部署爲RELEASE時不會運行。但是關於GarbageCollector,這不會有太大的影響。我認爲這會走向錯誤的方向。 –
嘗試使用內存分析器,例如ANTS Memory Profiler。首先你需要了解發生了什麼,然後你可以考慮如何解決它。
http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/
- 1. Android應用程序緩慢
- 2. 緩慢的應用程序
- 3. 在應用程序中緩慢加載的應用程序
- 4. Dojo使應用程序加載緩慢
- 5. AccelerationSensor.accelerationchanged()使應用程序緩慢
- 6. 燒瓶應用程序非常緩慢
- 7. Python GUI(tkinter.ttk)應用程序緩慢
- 8. getbitmap使應用程序緩慢
- 9. 緩慢加載winforms應用程序
- 10. ASP.Net應用程序加載緩慢 - VS2008
- 11. Windows:緩慢啓動應用程序
- 12. 我的新Android應用程序緩慢
- 13. ASP.NET Web應用程序緩慢
- 14. 桌面應用程序緩慢啓動
- 15. Android webview請求應用程序緩慢
- 16. Twitter Fabric.io應用程序上傳緩慢
- 17. 緩慢的應用程序性能
- 18. 緩慢的iOS應用程序
- 19. Aurelia CLI應用程序包自動更新變得緩慢
- 20. Azure Web應用程序變得非常緩慢
- 21. 應用程序變得非常緩慢 - Azure Web App
- 22. Android圖像視圖使應用程序變得緩慢
- 23. 在大圖像上過濾應用程序變得緩慢
- 24. 生成矩形後,應用程序變得緩慢
- 25. css應用程序與谷歌應用程序引擎緩慢
- 26. ios後臺應用程序從MPNowPlayingInfoCenter響應緩慢
- 27. Windows應用程序獲得按鈕點擊緩慢由於搭扣DLL
- 28. SQL2005從遠程VB6應用程序緩慢表示
- 29. 從mongodb獲得緩慢的響應節點
- 30. 應用程序變得非常慢?
沒有更多的細節和/或代碼您的問題可能太寬泛無法回答。有太多未知因素;有可能不會有一個簡單而通用的解決方案。 –