我这伪作品像这样的应用程序:如何将此调用替换为GC.Collect?
DisplayPrettyUI()
DoABunchOfReportingWorkThatAllocatesHundredsOfMB()
GC.Collect() //Free up the memory used in generating the report
DisplayReport()
现在,我不能得到彻底的摆脱了对方付费电话的,因为如果我这样做的过程中持有以多GB的生成报告后的内存,尽管应用程序仅托管UI组件以显示当时的报告。与此同时,收集电话似乎“臭”;似乎必须有某种方式来处理这种情况,而不必去那里。
消除这种味道可能吗? (我已经听说过像AppDomain这样的解决方案,但是我从来没有使用过AppDomain,并且不知道它对垃圾收集器有什么语义...)
为了这听起来像一个合法使用GC.Collect'的'。 – CodesInChaos 2012-07-29 18:07:12
@CodesInChaos:在某些方面是的;但似乎这可能会更有效率。我作为应用程序开发人员知道,整个成千上万的对象可以立即死亡;不需要收集分析。如果CLR中某种地方没有这种模式的话,我会很惊讶。 – 2012-07-29 18:08:47
尝试尽可能优化DoABunchOfReportingWorkThatAllocatesHundredsOfMB(),但除此之外没有太多其他选项 – ghostbust555 2012-07-29 18:09:02