不使用垃圾收集的明显情况是实时性很强,内存严重受限,并且想要用指针进行操作.有没有其他的,较少讨论的,很好的理由为什么有人更喜欢手动内存管理而不是GC?
如果你有完全增量的垃圾收集器,每个字节的分配内存有限的执行时间,那么就可以实时使用垃圾收集,所以,疯狂的,不一定是不使用垃圾收集的理由:)
但是,垃圾收集的一个基本问题是难以估计和管理内存中工作集的实际大小,因为垃圾收集器只能延迟释放内存.所以,是的,当内存受到限制时,垃圾收集可能不是一个好的选择.
垃圾收集的另一个问题是它有时会干扰释放其他资源,例如文件描述符,窗口句柄等,因为垃圾收集器可能只会延迟释放这些资源,从而导致资源不足.
垃圾收集还可能导致缓存垃圾,因为内存不一定以本地方式分配.例如,堆栈分配的内存比堆分配的短期对象更加缓存友好.
最后,垃圾收集当然会消耗CPU时间:)所以如果你可以手动编写内存管理代码,你可以节省垃圾收集器消耗的CPU周期:)