找回密码
 加入
搜索
查看: 3332|回复: 4

请教 关于AU3 脚本释放内存代码的原理

  [复制链接]
发表于 2010-2-2 00:20:03 | 显示全部楼层 |阅读模式
;对脚本内存进行释放
Func _EmptyScriptMem()
        ;~ 无论您是使用或者转载,请保留原作者(kn007)信息,谢谢!
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, _
        'int', False, 'int', @AutoItPID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall("kernel32.dll" , 'int', 'CloseHandle', 'int', $ai_Handle[0])
EndFunc
这段代码是释放脚本内存的代码,是  kn007 写的,在使用时确实是释放了进程中的内存,而且效果很显著。
但是我本人不明白原理,搞VB的同事,10年工作经验,他告诉我说,释放内存其实就是压缩到虚拟内存中,我不是很相信,所以和各位高手讨教讨教,问问是不是这样的?
希望大伙能说说自己的看法!

评分

参与人数 1金钱 +10 收起 理由
曼菲士 + 10 很好的内容

查看全部评分

发表于 2010-2-2 08:16:35 | 显示全部楼层
我也想知道,帮你顶起
发表于 2010-2-2 09:27:58 | 显示全部楼层
我也想知道,我先去baidu一下。同时等高手。。。
发表于 2010-2-2 10:28:27 | 显示全部楼层
这个函数关键是这里,调用psapi.dll里面的函数EmptyWorkingSet将脚本的内存工作空间清空(释放),从而减少系统内存的占用。
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
 楼主| 发表于 2010-2-2 12:18:26 | 显示全部楼层
能找出不是压缩到虚拟内存的证据么?有图有真相,希望管理员置顶进行讨论!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 13:33 , Processed in 0.069403 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表