用AutoIt增强微软内存释放工具Empty

        Empty.exe是一个来自于Microsoft Windows Server 2003 Resource Kit Tools中的小工具,可以用来释放指定应用程序的Working Set(工作集)。

        Empty.exe是释放处于后台的进程所占用内存空间,以此增加当前活动的进程可以使用的内存空间而达到优化性能的目的,类似于内存整理。但与某些内存整理工具相比,它是直接释放对应进程的内存。强于某些将数据直接转移至虚拟内存中而导致硬盘狂转的工具。

  可惜的是,Empty.exe是一个命令行工具,日常使用不方便,那么就用AutoIt来完善一下吧。

程序思路如下:

  1. 获取整理前内存占用情况;

  2. 列举当前的所有进程,将其product id存入数组中;

  3. 构造循环语句,顺序执行empty.exe释放指定pid进程的内存并略过pid为0及4的系统进程,格式如下:

  Empty.exe pid

  例如:empty.exe 3640 (释放pid为3640的进程,即图2中的maxthon.exe

  4. 获取整理后内存占用情况;

  5. 检查目标系统是否允许气泡式弹出提示,以便使用对应的提示信息显示整理前后的对比情况。

#Include <process.au3>
$mem = MemGetStats()
$list = ProcessList()
For $i = 1 To $list[0][0]
    $line = "empty.exe" & Chr(32) & $list[$i][1]
    If $list[$i][1] <> 0 And $list[$i][1] <> 4 Then
        RunWait(@ComSpec & " /c " & $line, "", @SW_HIDE)
    EndIf
Next
$mem1 = MemGetStats()
$var = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "EnableBalloonTips")
If $var = 0 Then
    ToolTip("整理前可用/整理后可用" & Chr(13) & Chr(13) & Round($mem[2] / 1024, 1) & "/" & Round($mem1[2] / 1024, 1) & Chr(32) & "MB", @DesktopWidth - 108, @DesktopHeight - 76)
    Sleep(4000)
Else
    TrayTip("整理前可用/整理后可用", Round($mem[2] / 1024, 1) & "/" & Round($mem1[2] / 1024, 1) & Chr(32) & "MB", 4, 1)
    Sleep(4000)
EndIf
Exit

     将以上代码输入后,就可以进行程序测试,如果代码输入没有错误,就会执行程序,效果如下(如图3)。

点击下载源代码

申明:本站资源大部分来自网络,如果无意侵犯了你的权利,请及时通知我们 AutoIt@FoxMail.Com,我们将尽快处理
Copyright © 2008-2009 随便复制 共享精神 人人有责 All Right Reserved
粤ICP备08009024号