我正在维护一个现有的应用程序,并且在某些条件下(很容易复制)运行时遇到了一个bug,其中应用程序在消息中失败:
问题是:我需要先检查什么?这条消息什么时候发生?为什么?
在C#中这个虚拟内存中存储了什么,为什么是内存不足?
发布于 2011-11-14 13:18:10
听起来你好像有某种记忆或资源泄露。是时候打开分析器,看看是什么消耗了资源或内存。
良好的剖析器包括
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler
和
http://memprofiler.com/
-这会附加到你的运行过程中,看看什么是失控的。
通常,这种问题可能是由于实现IDisposable的对象没有通过对Dispose()的调用而被释放造成的。这些对象使用的内存和资源不是由.NET垃圾收集器管理的,因此(与常规的.NET对象不同)它们不会被系统自动整理。
分析器通常会告诉您这是否是一个问题。
例如,还有其他可能发生这种情况的情况。
再一次,分析器会告诉你问题可能发生在哪里。
发布于 2011-11-14 13:17:51
Windows使用虚拟存储器进行内存管理,但是内存是虚拟的并不是问题所在。这表明您的应用程序分配了大量内存--比系统上可用的内存还多。
有些事情可能会导致这种情况:
如果不了解更多关于应用程序的信息,就不可能给出更详细的提示。
https://stackoverflow.com/questions/8122150
复制相似问题