赞 | 0 |
VIP | 17 |
好人卡 | 0 |
积分 | 1 |
经验 | 1022914 |
最后登录 | 2017-2-4 |
在线时间 | 10 小时 |
Lv1.梦旅人 月下可怜人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 10 小时
- 注册时间
- 2005-11-23
- 帖子
- 4085

|
以下引用冰水于2008-1-11 19:46:15的发言:
默认开启,就是说这个类似个开关喽
def self.clear
@cache = {}
GC.start
end
默认开启这个方法为什么还要特意加个GC.start
那重复调用RPG::Cache.clear会不会出现什么问题啊?
GC.enable和GC.disable又有什么用。
我先用GC.disable后用GC.start,居然没有跳出任何异常提示,这是为什么?
首先,Cache是个模块,是静态处理,所以@cache会直接占用内存,当bitmap对象装入之后也会保留,RPG::Cache得到的是对象引用,当@cache = {}清空后,虽然@cache没有数据,对象占用的内存空间并没有被释放,此时GC会定时对不被使用的对象进行检查,并自动释放,GC.start是确保垃圾处理的有效,因为GC可以关闭的。
RPG::Cache.clear释放缓存,会影响相同的bitmap的载入速度,毕竟调引用比重新载入要快的多。
至于GC.enable和GC.disable与GC.start的逻辑关系看F1很好理解吧…… |
|