Я создал комплект внутренних веб-сайтов для нашей компании для управления некоторыми нашими процессами. Я замечал, что эти страницы имеют крупные утечки памяти, которые заставляют страницы использовать хорошо более чем 150 МБ памяти, которая смешна для веб-страницы, которая состоит из единственной формы и GridView, который отображает 7-10 строк данных за один раз, иногда с данными, не изменяющимися в течение целого дня. Это - проблема, потому что она замедляет наши клиентские машины из-за отсутствия доступной памяти.
После некоторого тестирования кажется, что утечку памяти чрезвычайно легко воспроизвести, и очень примечательный. Я создал страницу со следующей разметкой asp.net:
<body>
<form id="form1" runat="server">
<div>
<asp:scriptmanager ID="Scriptmanager1" runat="server"></asp:scriptmanager>
<asp:Timer ID="timer1" runat="server" Interval="1000" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
Нет абсолютно никакого кода позади для этого. Это - полнота страницы. Выполнение этого сайта в Chrome показывает, что использование памяти стреляет в 25 megs в промежутке 20-30 секунд. Отъезд его работающий в течение нескольких минут заставляет память подойти к 70 megs и такому.
Я использую таймеры и панели обновления неправильно, или действительно ли это - чистая проблема Asp.net без работы вокруг?
Примечание: Я не говорю о памяти, используемой на сервере, я говорю о памяти, используемой на клиенте.
Править: Хорошо похоже, что это - проблема с Chrome. Firefox и IE8, кажется, не имеют проблем памяти при выполнении этой страницы в течение длительного промежутка времени.
NET не обязательно использует всю память. См. Как определить, сколько памяти использует моя программа .NET?
Однажды я читал очень хорошую статью об этом, но сейчас не могу ее найти. Я обновлю этот ответ, если найду.
Edit: Вот хорошая статья: http://blogs.msdn.com/b/tess/archive/2006/09/06/742568.aspx И еще одна: http://www.getdotnetcode.com/gdncstore/free/Articles/The%20Memory%20Mystery.htm