| 赞 | 120  | 
 
| VIP | 13 | 
 
| 好人卡 | 16 | 
 
| 积分 | 194 | 
 
| 经验 | 38692 | 
 
| 最后登录 | 2025-10-17 | 
 
| 在线时间 | 3082 小时 | 
 
 
 
 
 
Lv4.逐梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 19416 
 
        - 在线时间
 - 3082 小时
 
        - 注册时间
 - 2013-1-11
 
        - 帖子
 - 1289
 
 
 
 | 
	
 本帖最后由 张咚咚 于 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左右报错图像文件找不到。。 
因为游戏有点大,序列图很多,图像不能频繁释放。。可能会影响游戏体验。。不知道有没有什么解决方法,主要可以查看游戏的图像占用的实际内存就好了= = |   
 
 
 
 |