在服务器(内存为 1GiB)上,我正在运行 SQL Server、IIS7 和我的应用程序(在 VS IDE 的调试中运行)。SQL Server 尚未配置为具有最大内存使用量,因此它一直在增长,直到内存争用开始出现。当内存紧张时,我的应用程序似乎(很少)只是freeze。它从未崩溃,没有错误,什么都没有,只是完全冻结。
每次我连接远程桌面并点击调试器中的暂停按钮(以检查堆栈跟踪)时,一切看起来都很好,并且在unpausing时,应用程序将恢复(和unfreeze),就好像什么都没发生过一样。
今天我解冻了服务器,在我的日志中发现它已经冻结了半个多小时(实际上什么也没做):
1/3/2013 7:37:07 PM [LOG] 违反了实时约束;处理扇区 AI 需要 2197516 毫秒。
这种行为是否记录在任何地方?我喜欢调试器可以只冻结应用程序而不是抛出内存不足的异常,但我想知道这一点(比如什么情况下允许调试器这样做,因为内存不足的异常确实存在!)。
编辑:为了清楚起见,我的应用程序没有显示任何内存泄漏迹象;它已经运行了56 天,几乎没有使用50MiB的内存。当我解冻应用程序时,一切恢复正常运行,我已经将近两个月没有重新启动应用程序了。配置SQL Server 最大内存(SQL Server 不单独运行时的常见做法)可能会使这个问题消失,但正如最初所说,我想了解更多有关它的信息。