垃圾回收

大部分内容来自于:

              http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

垃圾回收(garbage collection)机制的基本原则是:

1. 找出程序中不会再被访问到的对象。

2. 回收这部分对象占用的资源(内存)。

       不同语言对垃圾回收机制的支持不同,有一些将它当成语言必备的一部分(Java,C#,lua,python),有一些将它当成语言可选的一部分,有一些则不直接提供支持,但可以通过扩展库来实现(C,C++)。

       与垃圾回收机制相对的是手动管理内存。手动管理内存使程序编写起来变得复杂,在不小心的情况下容易出现错误,比如空指针、野指针、内存泄漏等。

       使用垃圾回收机制可以简化代码编写,减少出错的情况。但它本身也是有诸多缺点的:

  1. 垃圾回收器要决定哪些对象该被删除,哪些对象该被保留,这显然会需要消耗一定的计算机资源。比如可能需要空间来存储辅助标志位,可能需要时间来进行遍历和标记。
  2. 垃圾回收发生的时间往往是不可预料的。这显然不适合在实时环境、事务处理或交互场景中使用。
  3. 一些系统资源是无法直接被垃圾回收器简单回收的,比如文件句柄、socket等资源,仍然需要程序员显式的去操作。

  本来想写完,后来发现基本上完全在参照http://en.wikipedia.org/wiki/Garbage_collection_(computer_science),加入不了自己的想法,所以就不继续写了。这个wikipedia里的内容非常的详细。另外http://wiki.luajit.org/New-Garbage-Collector描述了另一种垃圾回收算法。

posted @ 2012-06-24 13:00  carter2000  阅读(425)  评论(0编辑  收藏  举报