尽管我确实理解使用此功能的严重意义(或者至少是我的想法),但我无法理解为什么它成为受尊敬的程序员永远不会使用的东西之一,即使那些甚至不知道的人是为了什么
假设我正在开发一个应用程序,该应用程序的内存使用量会根据用户的操作而变化很大。应用程序的生命周期可以分为两个主要阶段:编辑和实时处理。在编辑阶段,假设创建了数十亿甚至数万亿个对象。其中有些很小,有些则没有,有些可能没有终结器,而有些寿命可能从几毫秒到很长时间不等。接下来,用户决定切换到实时阶段。在这一点上,假设性能起着根本性的作用,并且程序流程中的任何细微改动都可能带来灾难性的后果。然后,通过使用对象池等将对象创建减少到最小程度,但是GC意外插入并扔掉所有对象,然后有人死亡。
问题:在这种情况下,进入第二阶段之前调用GC.Collect()是否明智?
毕竟,这两个阶段永远不会在时间上相互重叠,并且GC可以收集的所有优化和统计信息在这里几乎没有用处...
注意:正如您中某些人指出的那样,.NET可能不是适用于此类应用程序的最佳平台,但这超出了此问题的范围。目的是弄清楚GC.Collect()调用是否可以改善应用程序的整体行为/性能。我们都同意,在这种情况下您会做这种事情的情况极为罕见,但是GC再次尝试猜测并在大多数情况下都做得很好,但这仍然只是猜测。
谢谢。