回答
简短的回答:
我们只监测一次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