浅谈一键内存加速功能是如何实现的

        前段时间笔者仿写一个简易版的电脑管家,对于其中的绝大部分功能,如垃圾清理、进程管理、软件卸载、启动项、云查杀等功能或多或少能猜测到一些,但惟独对其中的一键内存加速功能不得要领,无奈,只能试着逆向电脑管家该功能看一看,电脑管家虽然有驱动保护,但是,万幸,一键加速是作为一个单独的exe实现,并且没有任何保护措施,下面我们就来看一些这个功能究竟是如何实现的。

      

        经过一番逆向,终于发现这个功能是如何实现的,不禁打呼坑爹啊,下面笔者就讲解一下如何实现这个一键内存加速。

        经研究,笔者发现,整个一键加速的功能,主要靠一个神奇的API实现,就是SetProcessWorkingSetSize,这个函数究竟有什么神奇的地方呢。

        首先,我们要明白虚拟内存的概念,注意,这里的虚拟内存是指在系统盘中的虚拟内存文件,当内存中的内容太多时,操作系统会对齐进行裁剪,将其中不太常用的部分,转移到硬盘上,这样占用的物理内存就会大大减小;

        而SetProcessWorkingSetSize这个API的功能,就是设置当前进程工作内存的大小,我们来看一下这个API的参数:

       SetProcessWorkingSetSize(

            hProcess Long,指定一个进程的句柄
            lpMinimumWorkingSetSize Long,用于装载最小进程容量的一个 变量
            lpMaximumWorkingSetSize Long,用于装载最大进程容量的一个 变量

          );

        这样就很明显了,第一个参数用来指定要设置进程的句柄,后面两个参数设为-1,这样系统就会自动对我们指定进程的工作内存进行裁剪,保留最小内存,多余的部分全面转移到硬盘上,而一键加速的功能,就是通过枚举进程,然后循环调用这个函数就搞定了。

        说道这里我想大家都明白了,所谓的一键内存加速,只是把物理内存中的转移到硬盘上,而其核心原理,仅仅只是调用一个API,那么这样的一键加速究竟有没有效果呢?

        打开你的任务管理器,在菜单栏中依次打开“查看”—>"选择列",然后将“页面错误”这一项勾上,然后确定,这个时候你会看到在“进程”选项卡中有页面错误那一列。

        下面我们要进行的操作就是,点击电脑管家的一键加速功能,360的加速球或者腾讯的小火箭都可以,然后我们来观察“页面错误”这一栏的数值,是不是看到了,数值在飞涨,那到底是为什么呢?

        要知道,系统将内存中的内容交换到硬盘上,在之后调用的时候仍然是要将其交换到物理内存中的,程序在调用数据的时候会先去内存中寻找,但是当我们的数据移动到硬盘之后,在内存中无法找到,这就会触发一个页面错误,这个时候系统会再去硬盘上查找,将其交换回内存中,然后程序才能调用。

        现在我们再来讨论下,一键加速真的实现加速了吗?很明显,完全没有,只是暂时将内存中的东西转移到硬盘上,但是在接下来的几分钟内会疯狂的触发页面错误,当你调用的数据在硬盘上时,你就会感觉更慢,因为他需要先从硬盘上交换到内存中,然后才能被你使用,这样对于运行小程序的机器或许没有太大感觉,但是如果你的电脑运行VM虚拟机或者大型游戏时,你就会感觉到一键内存加速反而会更慢了,所以,慎用一键加速。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值