我正在维护一个现有的应用程序,并且在某些条件下运行时遇到了一个错误(容易重现),其中应用程序失败并显示消息:
问题是:我需要先检查一下?这个消息什么时候发生?为什么呢?
C#中存储在此虚拟内存中的内容是什么,内存不足?
答案 0 :(得分:11)
听起来你有某种记忆或资源泄漏。是时候打开一个分析器,看看消耗的资源或内存是什么。
好的个人资料包括
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler
和
- 这将附加到您的正在运行的进程中,并查看失控的内容。
通常,这类问题可能是由于IDisposable
未通过调用Dispose()
而处置的对象造成的。这些对象使用的内存和资源不受.NET垃圾收集器管理,因此(与常规.NET对象不同)它们不会被系统自动整理。
分析器通常会告诉您这是否是一个问题。
还有其他可能发生这种情况的情况,例如
同样,分析器会告诉您问题可能存在的位置。
答案 1 :(得分:2)
Windows使用Virtual Memory进行内存管理,但虚拟内存不是问题所在。这表明您的应用程序分配了大量内存 - 超过系统上可用的内存。
可能导致这种情况的一些事情:
如果不了解您的应用程序,则无法提供更详细的提示。
答案 2 :(得分:1)
显然你的应用程序占用了大量内存。您可以在此处阅读有关虚拟内存的信息:http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx