IIS + Ajax UpdatePanel приводит к чрезмерному использованию памяти - PullRequest
0 голосов
/ 26 ноября 2010

У меня есть панель обновлений в сочетании с gridview с сортировкой и подкачкой страниц.

Я вхожу в диспетчер задач, чтобы отслеживать использование памяти рабочим процессом (w3wp)

Я просто делаюбыстро нажимайте на кнопки сортировки.

С каждым щелчком память процесса увеличивается примерно на 2 МБ

Так что я перехожу с 30 МБ использования памяти до примерно 90. Затем он останавливается на том, что остается там., память не освобождается.Я не использую состояние кэширования или сеанса / приложения.

Что может быть причиной этого, есть ли в IIS параметр для уменьшения использования mem?

-

Iтакже использовал .net профилировщик для проверки использования памяти моего приложения: 4 Мб, так для чего другие 86 используются ???Несмотря на то, что в отчете задано 4 МБ, в диспетчере задач указано 90 МБ, поэтому я полагаю, что остальное - неуправляемая память, которая должна каким-то образом использоваться IIS.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

.NET GC недетерминирован.Это означает, что он будет работать всякий раз, когда решит, что должен работать.Вы можете попытаться вызвать GC.Collect () явно, например, в событии Page_Init, чтобы увидеть, увеличивается ли объем памяти, но вам лучше удалить ее из реального приложения, в противном случае вы просто мешаете GC эффективно выполнять свою работу.

0 голосов
/ 26 ноября 2010

Проблема на самом деле с GridView, а не с UpdatePanel. Его записи хранятся в вашем ViewState, так что они передаются взад-вперед при каждой обратной передаче. Кроме того, при быстром нажатии на кнопки сортировки вы генерируете несколько запросов на сортировку данных. В зависимости от того, как реализована сортировка, вы можете дублировать набор записей для сортировки с каждым запросом клика.

В IIS нет настройки для «уменьшения использования памяти», поскольку она просто размещает ваше приложение ASP.NET. Ваше приложение должно решать свои проблемы с памятью.

Сортировка большого количества данных может быть ресурсоемким процессом. Я бы сказал, что вам лучше всего отключить кнопку сортировки после ее нажатия и повторно включить ее после сортировки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...