开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 6499|回复: 6
收起左侧

[已回应] 对[内存_优化]进行深刻的研究.

[复制链接]

结帖率:100% (1/1)
发表于 2013-12-28 12:22:37 | 显示全部楼层 |阅读模式   内蒙古自治区包头市
本帖最后由 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
);

这个函数实际上是不安全的

事实上,使用该函数并不能提高什么性能,也不会真的节省内存。

因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用。如果你强制使用该方法来 设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换。

他虽然会"节省"一次内存,但是并不应该使用定时器来循环释放,被放入虚拟内存的内存,将在被使用时重新占用,而虚拟内存是保存在硬盘中的,这样循环交换,会增加硬盘的读写次数,从而降低程序的运行效率.关键的是,还会在不知情的情况下导致内存错误.
并且,通常在程序最小化和后台时系统会自动调用该函数来节省内存.

所以以上叙述得出结论,该命令确实会产生不可预料的问题.所以应该将命令改为一次性执行,由用户需要时手动调用一次.

改善后的命令

改善后的命令


评分

参与人数 2好评 +1 精币 +3 收起 理由
Antool + 1 精彩文章希望继续努力
被封禁言 + 1 + 2 奉上小小红包希望笑纳

查看全部评分

结帖率:100% (11/11)

签到天数: 14 天

发表于 2013-12-29 16:59:47 | 显示全部楼层   重庆市重庆市


哎哟,我草,你把命令的描述都弄的那么XXX了。我还是删除这个东西吧

通常在程序最小化和后台时系统会自动调用该函数来节省内存.
回复 支持 反对

使用道具 举报

结帖率:100% (10/10)
发表于 2013-12-28 16:55:09 | 显示全部楼层   重庆市重庆市
的确是没什么用,用了,程序暂用内存浮动会很大,还可能会发生一些无法预料的错误。毕竟现在的电脑配置都很高了。推荐删除此命令
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 1 天

发表于 2013-12-28 14:16:04 | 显示全部楼层   上海市上海市
鸡肋命令,删了也无所谓,如果有程序已经沦落到用这个来“优化”内存了,那代码一定有问题
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)
发表于 2013-12-28 13:20:18 | 显示全部楼层   重庆市重庆市
说得好啊....
回复 支持 反对

使用道具 举报

结帖率:100% (15/15)

签到天数: 18 天

发表于 2013-12-28 12:29:50 | 显示全部楼层   湖北省黄石市
看到你的回帖了,谢谢你的答复.
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
发表于 2013-12-28 12:24:52 | 显示全部楼层   河南省信阳市


哈哈  雪落来了      
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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