Silverlight: очистить неиспользуемую память при переходе на другую страницу - PullRequest
0 голосов
/ 22 июня 2011

В моем приложении silverlight много страниц, и для навигации между страницами используется служба навигации. Одна из страниц получает большой объем данных (~ 1G) из веб-службы. Поскольку сборка мусора не происходит автоматически, мне нужно очистить память, выделенную на этой странице, когда я вернусь на предыдущую страницу (домашняя страница). Я попытался переопределить метод OnNavigatedFrom и попытался присвоить объектным ссылкам значение null и принудительно создать сборку мусора с помощью GC.Collect(). Но память не очищается. Я заметил, что если я обновляю домашнюю страницу, память резко падает. Как сделать очистку памяти программно.

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

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

0 голосов
/ 17 октября 2011

Один из способов, которым я очистил память, - это перезагрузить страницу или иметь одинаковый охват приложения на нескольких страницах asp.net ...

Таким образом, вместо навигации оно выгружает приложение (освобождает всю память) и перезагружает приложение. Я знаю, что гуру будут ненавидеть этот недальновидный ответ, но это единственный способ, которым я действительно смог получить дамп памяти.

В качестве примера можно сказать, что ваше приложение находится в default.aspx, и вместо перехода к чему-то вроде default.aspx#control1 вы помещаете то же приложение в новую страницу, например control1.aspx, и переходите к control1.aspx#control1. Либо так, либо вы можете разделить приложение на несколько приложений для загрузки на нескольких страницах.

Я заметил огромные выгоды от этого.

0 голосов
/ 23 июня 2011

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

См. Мой предыдущий пост здесь: Утечки памяти в Silverlight 4

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