我正在.Net中构建一个Web爬虫,一次执行大约500个httpwebrequests。 一切都运行正常,但问题出现在某些方面;看起来垃圾收集线程占用整个应用程序暂停几秒钟。无论如何,减少GC产生的延迟。
答案 0 :(得分:1)
Guidance on how to avoid GC problems in .Net
充分利用分配器 你应该考虑诸如此类的做法 以下内容:
- 分配要与a一起使用的所有内存(或尽可能多的内存) 给定数据结构。
- 删除可以避免的临时分配 处罚复杂。
- 最大限度地减少对象指针的写入次数, 特别是那些写给老年人的 对象。
- 降低数据结构中指针的密度。
- 限制使用终结器,然后仅限于“叶子”对象,如 尽可能多。如果打破对象 必要的帮助。
定期审查你的 关键数据结构和指导 内存使用情况配置文件 分配Profiler将有很长的路要走 保持你的记忆力有效 并有垃圾收集器 尽力而为。
你可以在一些更方便的时间request a GC,这可能会减少以后的暂停
另请查看相关的StackOverflow问题 - 那里有一些相关的问题----->