我有一个应用程序,它在伪代码中像这样工作:
DisplayPrettyUI()
DoABunchOfReportingWorkThatAllocatesHundredsOfMB()
GC.Collect() //Free up the memory used in generating the report
DisplayReport()
现在,我无法完全摆脱 collect 调用,因为如果我这样做了,那么在生成报告后,该过程会保留超过 GB 的内存,尽管应用程序只托管 UI 组件来显示报告时间。同时,对 Collect 的调用似乎很“臭”;似乎必须有某种方法可以在不去那里的情况下处理这种情况。
可以去除这种气味吗?(我听说过像 AppDomain 这样的东西来解决这个问题,但我以前从未使用过 AppDomain,也不知道它对垃圾收集器有什么语义......)