垃圾收集操作

有人可以解释我垃圾收集是如何工作的吗?

(我正在使用C#和Java)。

在一个简单的答案中涵盖了太复杂的主题。

以下是推荐阅读清单:

  • 维基百科:垃圾收集(计算机科学)
  • 垃圾收集:Microsoft .NET Framework中的自动内存管理
  • 垃圾收集:第2部分:Microsoft .NET Framework中的自动内存管理
  • Java理论与实践:垃圾收集的简史

垃圾收集背后的基本思想是你不必关心内存管理。 Garbage Collectod所做的是定期检查对象引用并找到不再使用的对象(不再引用)来回收它们的内存并压缩另一个。 垃圾收集器使用各种算法来执行他们的工作,并且它们在从一个语言到另一个语言的某些细节上有所不同。 维基百科为您提供了一个很好的起点 。 如果您正在寻找有关各种垃圾收集器(Java,.NET,..)的实际实现的更多深入信息,您可以在这里和此处查看或搜索谷歌以获取更多信息。

试试“ 垃圾收集:自动动态内存管理算法 ”一书。 它不会有更新的东西,但它会让你在路上。

Perfmon为GC相关性能提供了许多计数器……

这是一个很好的网络广播,讨论简单的标记和扫描(非世代)垃圾收集 ,完成了很好的动画,以帮助克服这个概念。

我想你需要知道垃圾收集器是一个在你的程序上运行的线程,释放了引用使它们无法访问的对象所占用的内存。 您还需要知道无法预测int GC运行的那一刻,您可以调用System.gc()建议 GC运行但不要让它运行 ,它是JVM谁会做出这个决定。

如果你有: Object objectReference = null;

objectReference引用的Object是GC诱饵。 “隔离岛”的主题以及finalize( )方法如何工作是有趣的主题。 我建议快速谷歌搜索两者。