我们有一个c#.NET应用程序,占用空间大约为300 MB。
我的问题:
答案 0 :(得分:2)
简短回答:
我们只监视过WPF应用程序的内存使用情况,由于我们的第三方控件之一的错误而导致该内存使用变得非常严重。
由于.NET提供了托管框架,因此唯一的指导原则可能是不担心内存,只要它不会成为问题。 GC可以很好地处理自己,只要它们的内存仍然可用,为什么不使用它?
那么什么时候成为一个问题呢?当您需要开始担心时,可能会出现内存异常。我个人从未见过这种情况。
答案 1 :(得分:2)
通常情况下,静态内存占用量不是问题,除非它在目标计算机上造成问题。内存的真正问题是当你有内存泄漏时,内存正在增加。
我从不打扰的原因是我不知道特定应用程序的内存占用是好还是坏。我认为有更好的途径来识别代码中的问题而不是关注内存。简单来说,如果您的代码写得很好,并且您已经删除了不需要的引用,那么您的内存占用将是正确的。
答案 2 :(得分:1)
最重要的是它不会随着时间的推移而增长。为了正确地理解这一点,偶尔进行一些强制垃圾收集会很有用,最好是在你期望内存使用率很低的时候。
在我们的GUI应用程序中,我们在会话关闭时执行此操作,每10分钟左右。如果人们反对在发布应用程序中强制使用GC,则可以将其设置为仅限调试版本的功能。
答案 3 :(得分:1)
我只担心内存会在一段时间内增长 - 您可能需要使用自动化测试来反复重复操作以暴露此类内存泄漏(请参阅How to test a WPF user interface?)
如果您真的担心我会考虑使用Redgate ANTS Profiler等内存分析器,或者如果您想免费试用CLRProfiler4;后者是很难使用的,但它仍然会耐心地发现内存泄漏。