В производственной среде asp.net 2.0 у нас есть aspx, который запрашивает все виды запросов к базе данных SQL2005.Некоторые запросы займут некоторое время, поэтому мы добавили кнопку отмены.
В коде мы открываем соединение и после этого вызываем command.ExecuteReader ().Мы привязываем его к сетке.
При нажатии кнопки отмены мы вызываем команду. Отмена (), удаление команды, соединения и устройства чтения данных.А также закройте соединение.
После выполнения кода я вижу в SQL profiler запрос отменен.Но w3wp.exe все еще использует много памяти.
Чтобы проверить это, я написал запрос, который возвращает много данных.Через 2 секунды я могу отменить это, и я вижу, что память увеличивается с 250 МБ до почти 2 ГБ.Через некоторое время память не уменьшается.
Я использовал JetBrains dotTrace Memory 3.5, чтобы посмотреть, что происходит с памятью.Что я вижу, так это то, что 66,6% памяти используется DataBoundControl.PerformSelect.Microsoft говорит, что «метод PerformDataBinding вызывается после извлечения данных для привязки данных к элементам элемента управления с привязкой к данным».Но не все данные извлекаются, звонок отменяется.Что происходит и почему память не освобождается?
Кто-нибудь знает, что происходит и / или как решить эту проблему?