Project1

标题: 求一个整理内存的脚本 [打印本页]

作者: 我海市蜃楼    时间: 2010-8-22 17:17
标题: 求一个整理内存的脚本
在用远景做地图的时候会发现电脑内存会越来越高,请问有没有真理系统内存的脚本?
作者: 光的圆周率    时间: 2010-8-22 17:43
  1. #==============================================================================
  2. # ■ Memories_Exchange
  3. #------------------------------------------------------------------------------
  4. #  将内存中不必要的空间释放到虚拟内存中。
  5. #==============================================================================
  6. class Memories_Exchange
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #    ● ● ● 尽量减少调用次数● ● ●
  10.   #--------------------------------------------------------------------------
  11.   def initialize()
  12.     $SetProcessWorkingSetSize = Win32API.new("kernel32", "SetProcessWorkingSetSize", 'lll', 'l')
  13.     $GetCurrentProcess = Win32API.new("kernel32", "GetCurrentProcess", 'v', 'l')
  14.     $SetProcessWorkingSetSize.call ($GetCurrentProcess.call, -1, -1)
  15.   end
  16. end
复制代码
效果待测,尽量不要调用
作者: luowx    时间: 2010-8-22 17:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我海市蜃楼    时间: 2010-8-22 20:27

作者: 我海市蜃楼    时间: 2010-8-22 20:35
不怎么管用啊

作者: trentswd    时间: 2010-8-22 22:00
{:nm_7:}放到虚拟内存只会变慢吧
一般来说是要把rm的cache清理一下,好像是clear?我忘了……
作者: 光的圆周率    时间: 2010-8-22 23:08
= =Lz要的是整理内存嘛,这么做可以回收一部分内存,貌似MSDN是这么说的
作者: 八云紫    时间: 2010-8-22 23:11
感觉效果不大, VX 自己建立了一个 Cache 保存图片.

Cache.clear;
作者: 紫苏    时间: 2010-8-23 00:54
SetProcessWorkingSetSize(hProcess, -1, -1) 的用法是(尽可能多地)清空 hProcess 标识的进程的虚拟地址空间里的页面,供给系统核心或系统上的其它进程使用,但当某个页面内存已经被该进程占用时,当然就不会把这个页面从地址空间里移除了,否则后果可想而知
RM 的 Cache 没有容量限制,对于比较庞大的游戏,游戏进行一段时间后不但内存负荷巨大,同时哈希碰撞率也会大大地增加,有大量只用过一次的位图闲置于内存中,降低了真实 CPU Cache 的命中率,完全与了 Cache 设计的初衷背道而驰。可能的解决方案是学主流 CPU Cache,用 LRU 算法记录使用次数最少的 Cache 块,固定其容量,这样在一个快速缓存区中维护的是游戏中使用次数最多的位图




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