除了其他人指出的关于性能的内容(这是完全正确的)之外,我还想指出垃圾收集是实时系统的一个主要问题,因为它引入了不可预测性。
回想一下,实时系统是一个系统,其中任务必须满足特定的时间限制才能正确。例如,如果您正在为一个机器人编写代码,但它没有发现它即将撞墙而停止,那么显然这不是一个正确的结果。在你已经这样做之后你发现你将要撞墙的事实是完全没有用的。
从 Microsoft文档中,
要回收对象,垃圾收集器必须停止应用程序中所有正在执行的线程。在某些情况下,例如当应用程序检索数据或显示内容时,可能会在关键时刻进行完整的垃圾回收并影响性能。
这尤其成问题,因为很难或不可能预测垃圾收集器何时运行或完成需要多长时间。这可能会导致任务错过截止日期。
我上面链接的文章更详细地描述了垃圾收集器的性能影响以及在时间紧迫的情况下可以最大限度地减少其影响的方法。
就其价值而言,实际上有人在努力制作 C# 和 Java 的实时版本。例如,参见实时 Java。
我确实意识到绝大多数系统都不是实时的,但是对于那些(引擎控制等)来说,拥有一种没有垃圾收集的语言有明显的好处。