尽管我确实理解使用这个函数的严重含义(或者至少我是这么认为的) ,但是我不明白为什么它会成为受人尊敬的程序员永远不会使用的东西之一,即使是那些甚至不知道它是用来做什么的人。
假设我正在开发一个应用程序,其中内存使用情况根据用户的操作而变化很大。应用程序生命周期可以分为两个主要阶段: 编辑和实时处理。在编辑阶段,假设创建了数十亿甚至数万亿个对象; 其中一些很小,一些没有,一些可能有终结器,一些可能没有,并假设它们的生命周期从几毫秒到长时间不等。接下来,用户决定切换到实时阶段。在这一点上,假设性能扮演了一个基本的角色,程序流中最轻微的改变都可能带来灾难性的后果。然后,通过使用对象池之类的方法,对象创建被减少到最小,但是,GC 意外地插入并抛弃它,有人死亡。
问题是: 在这种情况下,在进入第二阶段之前调用 GC.Collect ()是否明智?
毕竟,这两个阶段从未在时间上相互重叠,GC 可能收集到的所有优化和统计信息在这里几乎没有用处..。
注意: 正如你们中的一些人指出的,。NET 可能不是这种应用程序的最佳平台,但这已经超出了这个问题的范围。其目的是澄清 GC.Collect ()调用是否可以改善应用程序的整体行为/性能。我们都同意,在这样的情况下,你会做这样的事情是极其罕见的,但话说回来,GC 试图猜测,而且在大多数时候做得非常好,但这仍然只是猜测。
谢谢。