316428696 发表于 2010-2-2 00:20:03

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

;对脚本内存进行释放
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)
        DllCall("kernel32.dll" , 'int', 'CloseHandle', 'int', $ai_Handle)
EndFunc这段代码是释放脚本内存的代码,是kn007 写的,在使用时确实是释放了进程中的内存,而且效果很显著。
但是我本人不明白原理,搞VB的同事,10年工作经验,他告诉我说,释放内存其实就是压缩到虚拟内存中,我不是很相信,所以和各位高手讨教讨教,问问是不是这样的?
希望大伙能说说自己的看法!

nxbigdaddy 发表于 2010-2-2 08:16:35

我也想知道,帮你顶起

figons 发表于 2010-2-2 09:27:58

我也想知道,我先去baidu一下。同时等高手。。。

C.L 发表于 2010-2-2 10:28:27

这个函数关键是这里,调用psapi.dll里面的函数EmptyWorkingSet将脚本的内存工作空间清空(释放),从而减少系统内存的占用。
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle)

316428696 发表于 2010-2-2 12:18:26

能找出不是压缩到虚拟内存的证据么?有图有真相,希望管理员置顶进行讨论!
页: [1]
查看完整版本: 请教 关于AU3 脚本释放内存代码的原理