2010-11-18 60 views
1

我在.Net中構建一個web爬蟲,它一次執行約500個httpwebrequests。 一切運行良好,但問題出現在一些點;看起來垃圾收集線程接管整個應用程序暫停幾秒鐘。無論如何,減少GC產生的延遲。GC暫停完整的應用程序活動

回答

1

Guidance on how to avoid GC problems in .Net

爲了獲得最好的分配器 你應該考慮的做法,如 如下:

  • 分配所有內存(或儘可能)是與 同時使用給定的數據結構。
  • 刪除可以避免的臨時分配,並且複雜性很低。
  • 最大限度地減少對象指針寫入的次數, 尤其是對較舊的 對象寫入的次數。
  • 減少數據結構中指針的密度。
  • 限制使用終結器,然後僅限於「葉」對象,儘可能多地使用 。如果 需要幫助,請打破對象。

審查您 的關鍵數據結構,並進行與像 分配探查工具 內存使用配置文件將很長的路要走 去保持你的內存使用率有效 和具有垃圾收集 工作最好的常規做法爲你。

您可以request a GC一些更方便的時間,這可能會降低停頓後

也看一下相關的StackOverflow問題的權利 - 也有一些相關的人有----->