赞 | 123 |
VIP | 13 |
好人卡 | 16 |
积分 | 195 |
经验 | 38692 |
最后登录 | 2024-11-21 |
在线时间 | 3106 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 19463
- 在线时间
- 3106 小时
- 注册时间
- 2013-1-11
- 帖子
- 1292
|
本帖最后由 张咚咚 于 2020-7-13 20:42 编辑
@⑨姐姐 我感觉289楼查看Bitmap占用内存的建议还是有用的。。
- SetProcessWorkingSetSize = Win32API.new('kernel32', 'SetProcessWorkingSetSize', 'iii', 'i')
- GetCurrentProcess = Win32API.new('kernel32', 'GetCurrentProcess', 'v', 'i')
- arr = []
- loop do
- if Input.trigger?(:C)
- 1000.times{ arr << Bitmap.new('Graphics/Parallaxes/##平行—战神殿/0-0') }
- end
- if Input.trigger?(:X)
- SetProcessWorkingSetSize.call(GetCurrentProcess.call, -1, -1)
- end
- Graphics.update
- Input.update
- end
复制代码
比如上面这段脚本,按下空格加载很多个图像,来提升内存占用,在达到1.7G左右的时候,会100%弹错该图像文件找不到(但是图像文件确实是存在,File.exist?检测也确实能检测到)。。
于是我使用API来获取当前游戏进程的内存占用量,超过1G直接释放Cache里面所有的图像。
但是一些安全软件的加速球功能会调用 SetProcessWorkingSetSize 这个API来清掉内存,游戏达到1G内存后,被这个API调用一下会直接降到60M左右。。(调用方式也写在循环里了,按 A 键清理本进程内存,和加速球清理效果一样的)
但是游戏实际内存还是1G,这时候如果再加载1G的图像,任务管理器进程显示是1G占用,但是实际占用其实是2G了,所以中途就会导致因内存占用超过1.7G左右报错图像文件找不到。。
因为游戏有点大,序列图很多,图像不能频繁释放。。可能会影响游戏体验。。不知道有没有什么解决方法,主要可以查看游戏的图像占用的实际内存就好了= = |
|