Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内存不足导致调试冻结?_C#_.net_Visual Studio 2010_Debugging_Memory Management - Fatal编程技术网

C# 内存不足导致调试冻结?

C# 内存不足导致调试冻结?,c#,.net,visual-studio-2010,debugging,memory-management,C#,.net,Visual Studio 2010,Debugging,Memory Management,在一台服务器(内存为1GB)上,我运行SQL server、IIS7和我的应用程序(在VS IDE上调试运行)。SQL Server尚未配置为具有最大内存使用率,因此它一直在增长,直到内存争用开始出现。当内存紧张时,我的应用程序似乎(很少)冻结了。它从未崩溃,没有错误,什么都没有,只是完全冻结了 每次我连接远程桌面,并点击调试器中的暂停按钮(检查堆栈跟踪)时,一切看起来都会正常,当取消暂停时,应用程序将恢复(并解冻),就好像什么都没有发生一样 今天,我对服务器进行了解冻,在我的日志中发现它已经处

在一台服务器(内存为1GB)上,我运行SQL server、IIS7和我的应用程序(在VS IDE上调试运行)。SQL Server尚未配置为具有最大内存使用率,因此它一直在增长,直到内存争用开始出现。当内存紧张时,我的应用程序似乎(很少)冻结了。它从未崩溃,没有错误,什么都没有,只是完全冻结了

每次我连接远程桌面,并点击调试器中的暂停按钮(检查堆栈跟踪)时,一切看起来都会正常,当取消暂停时,应用程序将恢复(并解冻),就好像什么都没有发生一样

今天,我对服务器进行了解冻,在我的日志中发现它已经处于冻结状态超过半个小时(实际上什么也没做):

2013年1月3日7:37:07 PM[LOG]违反了实时约束;处理扇区AI需要2197516ms

这种行为是否有记录在案?我喜欢调试器可以冻结应用程序而不是抛出内存不足异常,但我想知道这一点(比如什么情况允许调试器这样做,因为内存不足异常确实存在!)


编辑:我要说的是,我的应用程序没有显示任何内存泄漏的迹象;它已经运行了56天,几乎没有使用50MiB的内存。当我解冻应用程序时,一切都恢复正常运行,我已经有近两个月没有重新启动应用程序了。配置(SQL Server不单独运行时的常见做法)可能会使此问题消失,但正如最初所述,我想了解更多信息。

无可见错误。可以肯定地说你有内存泄漏,是吗?我将重点关注这一点。这不是内存泄漏,应用程序已经运行了56天,内存使用率没有任何增加。SQL Server是唯一一个内存使用量不断增长的进程。当SQL Server变大时,我的应用程序(仅使用了50MB内存)冻结,IIS的数据库连接开始因超时而失败(即使超时被显式禁用)。我认为真正的问题是,为什么要在内存如此之少的服务器上运行IIS和SQL?尽管有这样的选择,已经有人说@Smith先生知道如何解决这个问题。我不确定VS是否是解决内存问题的最佳调试器。Sincs所有的东西都在一个系统上运行,我认为如果真的内存不足,那么所有东西都会冻结,包括调试也就不足为奇了(因为VS不是一个小程序)。查看任务管理器是否能提供足够的信息,说明哪个进程占用了多少内存以及剩余的内存?此外,当应用程序内存不足时,而不是系统内存不足时,会引发OutOfMemoryException。OutOfMemoryException不一定表示系统内存不足。试着阅读这篇文章,看看它是否有助于您深入了解这些问题。