我正在编写一个金融C#应用程序,该应用程序从网络接收消息,根据消息类型将它们转换为不同的对象,最后将应用程序业务逻辑应用于它们。
关键是在应用业务逻辑之后,我非常确定我将不再需要该实例。与其等待垃圾收集器释放它们,不如明确地“删除”它们。
在C#中,是否有更好的方法可以做到这一点?我应该使用对象池来重用总是相同的一组实例,还是有更好的策略?
目的是避免垃圾收集在时间紧迫的过程中使用任何CPU。
最佳答案
不要立即删除它们。为每个对象调用垃圾收集器是一个坏主意。通常,您真的根本不想弄乱垃圾收集器,即使时间紧迫的进程也是如此,如果它们如此敏感,它们就只是要等待的竞争条件。
但是,如果您知道自己的应用将有繁忙时段与轻负载时段,则可以在达到轻负载时段时尝试使用更通用的GC.Collect(),以鼓励在下一个繁忙时段之前进行清理。