我正在使用WebClient,DownloadString(“http://example.com/string.txt”); 当我调用它时,内存会跳起来,但永远不会再次下降,因为我需要从网上下载2-3个不同的字符串,所以内存会大大增加。
我是C#的新手并且还在学习,但是从网上下载字符串之后是否还要清除内存? 如果没有,您是否知道我可以使用任何其他方法从网上阅读使用更少的内存?
由于
答案 0 :(得分:8)
WebClient实现IDisposable,因此您的代码应如下所示:
string result;
using (WebClient client = new WebClient())
{
result = client.DownloadString("http://example.com/string.txt");
}
Console.WriteLine(result);
这将确保释放WebClient实例使用的大多数资源。
其余的最终将由垃圾收集器清理。你不必担心这个。
答案 1 :(得分:3)
Taskmgr.exe或ProcExp.exe等工具显示的“内存使用情况”会让您蹲下程序使用的实际内存。当垃圾收集器释放虚拟内存时,可用空间几乎不会返回给操作系统。它被添加到一个空闲块列表中,准备好在下一次分配时重用。自由块合并回一系列可以释放的页面的几率非常小。
这绝不是一个真正的问题,这是虚拟内存。另一种让您感觉良好的方法是最小化程序的主窗口。它修剪了工作集,即使用的RAM量。