|
本帖最后由 V雪落有声V 于 2013-12-28 12:25 编辑
SetProcessWorkingSetSize今天看到了这一个提交的问题:
http://bbs.125.la/thread-13690973-1-1.html
查看模块中的代码发现,[内存_优化]命令的写法非常的独特.而且也非常的另类.
内存优化命令
这便是实现的方法了.
但是这个方法居然调用时钟,并且进行以周期的循环进行对内存的"优化".这里首先需要讨论的是SetProcessWorkingSetSize这个函数
http://msdn.microsoft.com/en-us/library/ms686234(v=vs.85).aspx
当然,上面这个链接是英文的,可以参考右面这个日志的内容.→点击查看
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,//进程的句柄.
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);
这个函数实际上是不安全的
事实上,使用该函数并不能提高什么性能,也不会真的节省内存。
因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用。如果你强制使用该方法来 设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换。
他虽然会"节省"一次内存,但是并不应该使用定时器来循环释放,被放入虚拟内存的内存,将在被使用时重新占用,而虚拟内存是保存在硬盘中的,这样循环交换,会增加硬盘的读写次数,从而降低程序的运行效率.关键的是,还会在不知情的情况下导致内存错误.
并且,通常在程序最小化和后台时系统会自动调用该函数来节省内存.
所以以上叙述得出结论,该命令确实会产生不可预料的问题.所以应该将命令改为一次性执行,由用户需要时手动调用一次.
改善后的命令
|
评分
-
查看全部评分
|