【发布时间】:2011-02-27 00:29:49
【问题描述】:
我有一个从 web 下载页面的爬虫应用程序(使用 C#)。
应用程序占用更多的虚拟内存,
甚至我处理所有对象,甚至使用GC.Collect() .
这个,有 10 个线程,每个线程都有一个下载页面的套接字。
在每个线程中,我都有一个byte[] buffer 来存储页面内容,并且有
我存储在其中的string str_content,字符串中的页面内容。
我有一个Sytem.Timer,每 3 秒检查一次,如果每个线程都已停止,
为其分配新线程并启动它。
我使用 dispose 方法,甚至在我的应用程序中使用 GC.Collect(),但在 3 小时内我的应用程序需要
500 MB 虚拟内存(进程资源管理器中的私有字节 500 MB)。然后我的系统
将挂起,我应该重新启动我的电脑。
如果我将我的
byte[]和string分配为 null 会很粗鲁吗?有什么方法可以释放虚拟内存吗?
谢谢。
【问题讨论】:
-
使用分析器查找内存泄漏。
标签: c# memory virtual garbage-collection