设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1984|回复: 10
打印 上一主题 下一主题

[已经解决] 关于GC

 关闭 [复制链接]

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

跳转到指定楼层
1
发表于 2009-8-15 00:31:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 赤点 于 2009-8-15 21:31 编辑

垃圾回收拿来干嘛的
谁能讲解一下,谢了
GC
GC 是用来控制 Ruby 解释器的「垃圾回收(Garbage Collection)」的模块。

模块方法GC.disable
禁止使用垃圾回收。

返回此前的禁用状态(若此前已被禁用,则返回 true,若此前 GC 仍在工作,则返回 false)。

GC.enable
允许使用垃圾回收。

返回此前的禁用状态(若此前已被禁用,则返回 true,若此前 GC 仍在工作,则返回 false)。

GC.start
启动垃圾回收。

返回 nil。
就算痛也要做,宅必备宅人的必备网站

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

2
 楼主| 发表于 2009-8-15 09:12:37 | 只看该作者
顶&
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

3
发表于 2009-8-15 09:51:57 | 只看该作者
自动释放不再使用的对象。
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2009-6-6
帖子
1732

贵宾

4
发表于 2009-8-15 09:59:19 | 只看该作者
很好~~~咱看不懂~~~~~
欢迎大家加入AGM大军
群号:82696728
AGM区:http://rpg.blue/forum-77-1.html
玛姐我爱你~玛莉妲大人鞭挞我吧!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2007-7-14
帖子
2746
5
发表于 2009-8-15 10:31:37 | 只看该作者
垃圾回收机制:当需要分配的内存空间不再使用的时候,调用垃圾回收机制来回收内存空间。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
45
在线时间
47 小时
注册时间
2009-6-1
帖子
127
6
发表于 2009-8-15 12:03:52 | 只看该作者
這個對加快遊戲速度有幫助嗎?

GC看來好像是把沒用的東西先丟掉

不曉得這樣會不會加快遊戲速度。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

7
 楼主| 发表于 2009-8-15 12:07:49 | 只看该作者
只是节约内存用,能加快一点点吧
就算痛也要做,宅必备宅人的必备网站
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6645
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

8
发表于 2009-8-15 14:48:46 | 只看该作者
本帖最后由 后知后觉 于 2009-8-15 15:34 编辑

当一些东西失去了引用名(应该是这么叫吧- -)后就会被GC回收

你去 Cache 这个模块下看看最后的定义

    def self.clear
      @cache = {}
      GC.start
    end
@cache这个哈希表本来装了很多很多Bitmap对象
但是现在把这个哈希表清空了
这些Bitmap对象失去了引用的地方但是又占据着内存
然后就 GC.start - -  不知道有没有说错
以前在某帖里紫苏大人提到过这个- -
  1. Window_Base.new(0,0,640,480)
  2. 120.times{Graphics.update}
  3. $sprite = Sprite.new
  4. $sprite.z = 999
  5. $sprite.bitmap = Bitmap.new(640,480)
  6. $sprite.bitmap.fill_rect(0,0,640,32,Color.new(0,0,255,255))
  7. $sp = []
  8. $sp[0] = $sprite
  9. $sprite = nil
  10. $sp.clear
复制代码
有些东西弄不明白会觉得很诡异 - -
如果把 120.times{Graphics.update}
放到最后来执行的话 Window对象就不会被回收- -











你知道得太多了

回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3126
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
发表于 2009-8-15 17:02:49 | 只看该作者
本帖最后由 IamI 于 2009-8-15 17:04 编辑

8# 后知后觉
感觉有GC的应该是基于句柄……引用在GC的作用下应该也会崩溃吧 - -
事实上,GC默认开启,如果脚本编辑合适,GC只会吃闲饭。

在一个Scene上画一个Window,但是不dispose之,在回到地图时仍然可以看见这个窗口。不切换屏幕,在约1分钟以后Window仍然会消失。这就是GC的作用。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

10
 楼主| 发表于 2009-8-15 18:36:20 | 只看该作者
Ruby有引用?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-15 23:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表