为什么在大多数实时应用程序中首选C而不是Java?例如,空气管路系统。我想要一些理由,除了Java有点慢。
发布于 2010-01-03 02:16:40
原因有很多:
有一个real time version of Java,但我不知道它有多广泛。
我不确定C/C++总是比Java快的结论是否仍然适用于JDK 6。自从1.0版本执行了许多基准测试以来,发生了很多变化(例如,更快的对象创建、新的内存模型、新一代的GC算法、修订的反射等)。
发布于 2010-01-03 02:18:46
这里根本不是关于慢的问题。它是关于决定论和安全性的。Java虽然通常很快,但当垃圾收集器决定运行并暂停执行一秒钟时,它可能会挂起一微秒。如果垃圾收集器在飞机以每小时150英里的速度降落前展开飞机起落架时运行,可能会发生不好的事情。
具有显式内存分配的C语言更具确定性,程序员可以完全控制何时以及释放/分配多少内存,并且可以决定在执行安全关键操作时不释放内存。
目前,新的关键系统甚至不是用C语言编写的,而是用更安全的语言编写的,比如ADA。它和C一样是确定性的,而且(从类型安全的角度来看)甚至比Java安全得多。
发布于 2010-01-03 02:24:19
其中一个最大的原因是C没有垃圾回收。垃圾收集很棒,因为您不必担心释放内存,内存泄漏也不是什么大问题,但垃圾收集可能需要100毫秒或更长时间。在许多应用程序中,这段时间是微不足道的,但这意味着你的应用程序在这100毫秒内不能做任何其他事情。在某些实时应用中,这是不可接受的。有关更多信息,请阅读以下内容:
https://stackoverflow.com/questions/1992286
复制相似问题