Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# ASP.Net/SQL:取消查询后,内存为';t递减(DataBoundControl.PerformSelect)_C#_Asp.net_Sql Server 2005_Ado.net_Memory Leaks - Fatal编程技术网

C# ASP.Net/SQL:取消查询后,内存为';t递减(DataBoundControl.PerformSelect)

C# ASP.Net/SQL:取消查询后,内存为';t递减(DataBoundControl.PerformSelect),c#,asp.net,sql-server-2005,ado.net,memory-leaks,C#,Asp.net,Sql Server 2005,Ado.net,Memory Leaks,在asp.net 2.0生产环境中,我们有一个aspx,它可以向SQL2005数据库查询所有类型的查询。有些查询需要一段时间,因此我们添加了一个取消按钮 在代码中,我们打开连接,然后调用command.ExecuteReader()。我们将其绑定到gridview 在“取消”按钮中,单击我们调用command.cancel(),释放命令、连接和数据读取器。并关闭连接 执行代码后,我在SQL profiler中看到查询被取消。但是w3wp.exe仍在使用大量内存 为了测试它,我编写了一个返回大量数

在asp.net 2.0生产环境中,我们有一个aspx,它可以向SQL2005数据库查询所有类型的查询。有些查询需要一段时间,因此我们添加了一个取消按钮

在代码中,我们打开连接,然后调用command.ExecuteReader()。我们将其绑定到gridview

在“取消”按钮中,单击我们调用command.cancel(),释放命令、连接和数据读取器。并关闭连接

执行代码后,我在SQL profiler中看到查询被取消。但是w3wp.exe仍在使用大量内存

为了测试它,我编写了一个返回大量数据的查询。在2秒钟内我取消了它,我看到的是,内存从250Mb增加到几乎2Gb。一段时间后,记忆并没有减少

我已经使用JetBrains dotTrace Memory 3.5查看了内存的运行情况。我看到66,6%的内存被DataBoundControl.PerformSelect使用。Microsoft表示“在检索数据后调用PerformDataBinding方法,将数据绑定到数据绑定控件的元素。”但并非检索到所有数据,调用被取消。发生了什么,为什么内存没有被释放


有人知道发生了什么或/以及如何解决这个问题吗?

仅仅因为您处理了一个资源,并不意味着框架将返回内存。事实上,该框架的服务器版本将保留分配的内存空间,以便以后重用