回答
簡短的回答:
我們只監測一次WPF應用程序的內存使用情況,其中又以對我們的第三方控件之一,成爲相當嚴重的造成的錯誤。
由於.NET提供了一個託管框架,唯一的指導原則可能是不擔心內存,只要它不成爲問題。 GC可以很好地處理自己,只要他們的內存仍然可用,爲什麼不使用它?
那麼它何時成爲一個問題?當你需要開始擔心時,解決內存異常可能是你的觀點。我個人從來沒有見過這種情況發生。
最重要的是它不會隨着時間的推移而增長。爲了正確地評估這種情況,最好在預計內存使用率很低的時候進行一些偶爾的強制垃圾回收可能會很有用。
在我們的GUI應用程序中,我們在會話關閉時這樣做,每隔10分鐘左右。如果人們反對在發佈應用程序中強制使用GC,則可以將其作爲僅調試構建功能。
我們沒有增加內存佔用的問題,因此我們不需要強制垃圾收集。我只是擔心300MB的momory足跡可能太大? – bstack
@bstack:對於只有256MB內存的機器而言,它太大了。我們的應用程序,包含20個小時的dll,啓動後需要250MB。這從來不擔心我。這大部分是可執行的和CLR開銷。託管堆幾乎是空的。您可以使用「.NET Clr內存」類別中的計數器通過perfmon進行檢查。 – 2011-08-24 13:35:01
如果內存增長在一段時間內我只會擔心 - 你可能需要使用自動化測試,以便一遍又一遍地重複操作,揭露內存泄漏(見How to test a WPF user interface?)
如果你是真的很擔心我會考慮使用內存分析器,如Redgate ANTS Profiler或者如果你想免費試用CLRProfiler4;後者是很難使用的,但它仍然會耐心地發現內存泄漏。
我們沒有內存泄漏,只是擔心300MB的momory足跡太大! – bstack
您也可以使用內存分析器來查看分配內存的位置。 –
- 1. 內存佔用
- 2. UIImagePickerControllerSourceTypeCamera佔用內存
- 3. 將大文件(300MB)寫入內存流時出現內存不足異常
- 4. java web應用程序的內存消耗(300MB太高?)
- 5. UIImagePickerController不釋放內存佔用
- 6. 內存佔用與循環
- 7. CUDA共享內存佔用
- 8. rsyslog佔用大量內存
- 9. 什麼是內存佔用?
- 10. 佔用大量內存
- 11. cProfile佔用大量內存
- 12. 減少內存佔用
- 13. OSQA apache內存佔用
- 14. 準備好的SQLite語句在iPhone中佔用多少內存?
- 15. Xcode處置內存 - 圖像佔用太多內存,不會釋放內存
- 16. ListView的內容佔用大量內存
- 17. PHP不能使用300MB的RAM
- 18. 使用CGFloat和「內存佔用」
- 19. Iphone應用程序佔用內存
- 20. 的Netty ByteBuf佔用所有內存
- 21. 圖像佔用太多內存
- 22. PHP陣列佔用太多內存
- 23. 陣列佔用的內存空間
- 24. STL向量佔用太多內存
- 25. (iphone)UIImage佔用多少內存?
- 26. 工具來監視內存佔用的
- 27. 調試內存佔用率過高
- 28. 最小化MVC內存佔用空間
- 29. 庫代碼的內存佔用分析
- 30. 佔用大量內存的CGContextDrawPDFPage
這只是「壞」,如果它不符合你對應用程序的期望。你有什麼理由期待300MB的佔用空間過大? – razlebe
沒有理由,只是想知道是不是有一個過度的內存足跡... – bstack
好的,謝謝。我的觀點是,「過度」與預期有關。如果您的程序在299MB文件中打開並閱讀,則300MB的佔用空間不會過大。如果你的程序是「Hello World」,那很可能是。如果沒有更多的信息,就不可能告知它是否過分。最好的建議是,下面已經提供了,這只是一個問題,如果(a)你不能騰出300MB的內存,或(b)佔用空間不斷增加,表明存在內存泄漏。 – razlebe