问题描述
垃圾收集器和传统内存收集器的区别?
哪些应用程序不能很好地与垃圾收集器配合使用?
解决方法
垃圾收集是一种管理内存(甚至其他资源,如 Linux 上的文件描述符,或文件系统中的 inodes,或者某些 SQL 服务中使用的某种临时表)的方式。
在我看来,传统的内存管理(想想 C++ 构造函数/析构函数)是一种有限形式的垃圾收集。
阅读GC handbook了解更多信息。
哪些应用程序不能很好地与垃圾收集器配合使用?
那些消耗许多动态资源(例如窗口小部件、文件描述符、agents、可能是一些自动证明助手中的子证明、OpenCL kernels ....)的那些没有被您的 GC。
因此,即使在使用具有内存 GC 的语言或实现(Ocaml、Scheme、Common Lisp)进行编码时,了解 GC 算法也很有用。如果您编写视频游戏,您需要为精灵等实现某种专门的 GC(即使您的游戏是在 JVM 上编码的,这需要内存的 GC)。>
我的观点是 GC 算法、术语或启发式在很多场合都很有用(例如,即使 git 也有一些“GC”)。