language-agnostic - 什么时候不使用垃圾收集?

标签 language-agnostic memory-management garbage-collection

不使用垃圾收集的明显情况是硬实时、严重受限的内存以及想要对指针进行处理。为什么有人更喜欢手动内存管理而不是 GC,还有其他任何较少讨论的充分理由吗?

最佳答案

可以使用硬实时垃圾收集,如果你有完全增量的垃圾收集器,每字节分配的内存有有限的执行时间,那么,非常疯狂,这不一定是不使用垃圾收集的理由:)

但是,垃圾收集的一个基本问题是很难估计和管理内存中工作集的实际大小,因为垃圾收集器只能延迟释放内存。所以,是的,当内存受到限制时,垃圾收集可能不是一个好的选择。

垃圾收集的另一个问题是它有时会干扰释放其他资源,例如文件描述符、窗口句柄等,因为同样,垃圾收集器可能只是延迟释放这些资源,从而导致资源匮乏。

垃圾收集也可能导致缓存垃圾,因为内存不一定以本地方式分配。例如,堆栈分配的内存比堆分配的短期对象对缓存更友好。

最后,垃圾收集当然会消耗 CPU 时间 :) 因此,如果您可以手动编写内存管理代码,则可以节省垃圾收集器将消耗的 CPU 周期:)

关于language-agnostic - 什么时候不使用垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628782/

相关文章:

graphics - "low level"3D图形编程

Android Media Player 挂起或返回 null

memory-management - iPhone 开发 - 为什么它使用 8MB?

tomcat - Xms与Xmx和XX的区别 :MaxPermSize

java - GC与其他两种内存管理方式的比较

java - 在与邻居对应的区域中随机选择点,避免无限递归

algorithm - 将 0's & 1' 排列成数组

algorithm - 并发程序的 "Hello World"是什么?

c++ - 以支持继承的方式在对象的构造函数中将 shared_ptr 添加到 self to vector

c# - 我应该把 KeepAlive 放在我的 finally block 中吗?