Использование памяти C # WebClient - PullRequest
3 голосов
/ 01 августа 2010

Я использую WebClient, DownloadString ("http://example.com/string.txt"); Когда я называю это, память скачет вверх, но никогда не падает снова, и, так как мне нужно 2-3 разных строки, загруженных из Интернета, память скачет довольномного.

Я новичок в C # и все еще учусь, но есть ли способ очистить память после того, как я скачал строку из Интернета? Если нет, знаете ли вы какие-либо другие методы, которые я могу использовать для чтенияИнтернет, который использует меньше памяти?

Спасибо

Ответы [ 2 ]

8 голосов
/ 01 августа 2010

WebClient реализует IDisposable , поэтому ваш код должен выглядеть следующим образом:

string result;
using (WebClient client = new WebClient())
{
    result = client.DownloadString("http://example.com/string.txt");
}
Console.WriteLine(result);

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

Остальное в конечном итоге будет очищено сборщиком мусора. Вам не нужно беспокоиться об этом.

3 голосов
/ 01 августа 2010

«Использование памяти», отображаемое такими инструментами, как Taskmgr.exe или ProcExp.exe, сообщает вам о фактической памяти, используемой программой. Когда виртуальная память освобождается сборщиком мусора, свободное пространство почти никогда не возвращается операционной системе. Он добавляется в список свободных блоков, готовых для повторного использования при следующем выделении. Вероятность того, что свободные блоки объединятся в диапазон страниц, которые могут быть освобождены, довольно мала.

Это никогда не проблема, это виртуальная память. Еще один способ быстро почувствовать себя хорошо - это свернуть главное окно программы. Это урезает рабочий набор, объем используемой оперативной памяти.

...