首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

8.5  垃圾收集器

垃圾收集器(Garbage Collector,GC)是现代软件虚拟机技术的重要组成部分,Java、Python包括Ruby等解释器语言都是采用垃圾收集的方式进行内存管理。GC把程序员从手工回收内存空间的繁重工作中解脱了出来。

Ruby提供了GC类和ObjectSpace类以提供垃圾收集功能,其中ObjectSpace类提供的垃圾收集功能只是提供了对GC.start方法的一个调用。

GC类只有disable、enable、start、garbage_collect 4个方法,其中前两个是关闭和启动垃圾收集器,start方法和garbage_collect意义相同,都是调用start方法实现垃圾收集功能。代码如下。

arr = Array.new(10000000,0)

arr = nil

GC.start

垃圾收集器的目标是:

·     回收已经无用的对象的内存空间,从而避免内存泄漏和程序因内存不断膨胀而崩溃;

·     判断一个对象的内存空间是否能被清空的标准是,该对象不再被程序中任何一个地方所引用(一般是指引用计数为0);

·     垃圾收集器线程定时轮询,但在系统的可用内存过低时会突然启动释放内存。

垃圾收集器执行的原则是:当对象的引用技术为0时清空对象。对象的引用采用“Copy on write”机制,这在Java和Delphi中很常见,如果要查看Copy on write机制的内存实现,可以参考Pascal中关于String对象的汇编代码。

Ruby的垃圾收集器相当优秀,可以保证Ruby的内存得到有效的释放。和其他一些脚本语言相比,Ruby的内存管理和垃圾收集机制非常占据优势。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论