Project1

标题: 简易的释放内存脚本 [打印本页]

作者: 英顺的马甲    时间: 2014-4-12 11:00
标题: 简易的释放内存脚本
主要是在界面切换的时候释放掉最吃内存的Bitmap==
  1. class Bitmap
  2.   alias clrram_init initialize unless defined? clrram_init
  3.   attr_reader :loaded_file
  4.   def initialize(*args)
  5.     @loaded_file = nil
  6.     if args[0].is_a?(String)
  7.       @loaded_file = args[0]
  8.     end
  9.     clrram_init(*args)
  10.   end
  11. end
  12. trace_var(:$scene){$__scene_changed = true}
  13. class << Graphics
  14.   alias clrram_freeze freeze unless defined? clrram_freeze
  15.   def freeze
  16.     clrram_freeze
  17.     if $__scene_changed
  18.       ObjectSpace.each_object(Bitmap) do |b|
  19.         b.dispose if !b.disposed? and b.loaded_file
  20.       end
  21.       $__scene_changed = false
  22.     end
  23.   end
  24. end
复制代码

作者: jilei    时间: 2014-4-12 17:46
本帖最后由 jilei 于 2014-4-12 17:48 编辑

话说我放了三个同类型的脚本,一个防卡机,一个内存清理,还有一个就是你的,是不是太多了?
——————————————————————————————————————————————————————
主界面还看得到鼠标系统的鼠标,进入游戏后直接给清掉了。。。有待改进。。。
作者: Im剑侠客    时间: 2014-4-13 04:35
先赞一个。大地图因为吃内存的紧,有了清理确实减轻了不少负担。嗯……需要清理要打开菜单一次,不知道能结合转换场景来进行清理呢?
作者: guoyq1988    时间: 2014-4-13 12:39
怎么切换地图时会闪烁?
作者: 影月千秋    时间: 2014-4-13 12:54
目测VA无效 不是用$scene控制场景的
作者: taroxd    时间: 2014-4-13 17:19
本帖最后由 taroxd 于 2014-4-13 19:49 编辑

希望将来的RGSS能够自带这个功能~现在的RGSS3已经能自动释放场景里的窗口了,希望有朝一日可以彻底丢掉“dispose”啊~~

@喵呜喵5
我怕与默认脚本冲突,或者释放掉了Cache里的东西之类的……
作者: 你最珍贵    时间: 2014-4-14 20:00
确定是无用的Bitmap吗?
作者: Sion    时间: 2014-4-14 20:17
不手动释放不舒服
不是说释放最吃内存的 Bitmap 吗,怎么没见有判断哪个最吃呢
作者: Im剑侠客    时间: 2014-5-31 10:38
本帖最后由 Im剑侠客 于 2014-5-31 10:39 编辑

恕我冒昧请求,内存清理默认执行条件是$_scene_changed = true ,也就是说只要scene改变,便开始清理内存了。问题也就有了,在菜单操作的时候,本身不占用太多内存的,但是也要清理,显得多余啦!希望能在scene改变的条件的基础上加入另外的判定条件,让内存清理成为自在可控的操作。(纠结于此,不能自己。)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1