我這僞作品像這樣的應用程序:如何將此調用替換爲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