垃圾收集器和传统内存收集器有什么区别?

问题描述

垃圾收集器和传统内存收集器的区别?

哪些应用程序不能很好地与垃圾收集器配合使用?

解决方法

垃圾收集是一种管理内存(甚至其他资源,如 Linux 上的文件描述符,或文件系统中的 inodes,或者某些 SQL 服务中使用的某种临时表)的方式。

在我看来,传统的内存管理(想想 C++ 构造函数/析构函数)是一种有限形式的垃圾收集。

阅读GC handbook了解更多信息。

哪些应用程序不能很好地与垃圾收集器配合使用?

那些消耗许多动态资源(例如窗口小部件、文件描述符、agents、可能是一些自动证明助手中的子证明、OpenCL kernels ....)的那些没有被您的 GC。

因此,即使在使用具有内存 GC 的语言或实现(Ocaml、Scheme、Common Lisp)进行编码时,了解 GC 算法也很有用。如果您编写视频游戏,您需要为精灵等实现某种专门的 GC(即使您的游戏是在 JVM 上编码的,这需要内存的 GC)。>

我的观点是 GC 算法、术语或启发式在很多场合都很有用(例如,即使 git 也有一些“GC”)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...