0

这与我的另一个问题有关

在消除了明显的(或者我认为的)和最大的内存消耗(asp.net 缓存中的图像)之后,并没有太大变化。我们在这个网站上使用企业库异常处理(不知道为什么,但我们这样做了)并且这些异常不会被记录。仅作记录,服务器有 4 GB 内存,所以我认为物理内存不是问题。

根据事件日志,会发生以下情况:

首先我从一个页面得到这个(很少从同一页面两次):

Exception information: 
Exception type: Exception 
Exception message: mscorlib - Exception of type 'System.OutOfMemoryException' was thrown. 

然后这个:

Description:
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/672222825/Root
Process ID: 1544
Exception: System.OutOfMemoryException
Message: Exception of type 'System.OutOfMemoryException' was thrown.
StackTrace:    at System.Threading.ExecutionContext.CreateCopy()
  at System.Threading._TimerCallback.PerformTimerCallback(Object state)

我的问题是:如何使用分析器查看导致崩溃的原因?我尝试了两个分析器 - 来自 JetBrains 的 .net 内存分析器和 dotTrace。内存分析并没有真正给我任何有用的东西,除了我有很多字符串。性能分析也无济于事,因为函数的执行时间都很好而且很花哨。如果在分析器运行时发生此错误,它只会停止分析 - 我可能使用错误。

ps对不起格式化,尽我所能。

4

3 回答 3

1

问题解决了——其中一位开发人员在会话中存储了整个数据表,这占用了内存(并且没有费心去问其他人是否可以)。

唯一让我困惑的是它必须崩溃得如此丑陋而不是抛出 YouIdiotYoureOverUsingSessionObjectException :)

哦,生活和学习...

于 2009-06-26T13:22:03.167 回答
0

我会检查您是否在 IDisposable 实现上调用 Dispose。一个相当好的检查方法是通过 FXCop 运行代码。

于 2009-06-24T07:44:48.227 回答
0

machine.config 中 ProcessModel 部分的内存限制属性控制回收前 ASP.NET 的最大内存使用量。

于 2009-06-24T07:57:53.317 回答