MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 关于wince系统的内存碎片,收集贴解决方法

关于wince系统的内存碎片,收集贴解决方法

www.MyException.Cn  网友分享于:2015-08-26  浏览:185次
关于wince系统的内存碎片,收集贴
做这个项目以来,多次在wince系统下遇到过内存碎片,这个东西非常可怕
先说我的:
  wince下gdi资源频繁创建回收会出现内存碎片
  内存动态分配回收频繁会产生内存碎片
  频繁的刷屏,过多的使用invalidate等函数也能产生内存碎片
  最好能将WM_ERASEBKGND的响应函数OnEraseBkgnd阻截修改成return true;
  克服内存最有效的方法是程序只有一次内存申请,并且只有一次释放(当然这需要程序框架上做保障)
应用领域:
  我是做运动控制软件的,实时性和稳定性要求较高,长期运行,程序需要频繁刷屏
大家来说一说自己的认识吧,呵呵痛苦的滋味,你是否有体会

------解决方案--------------------
我们公司也是在wince上开发,做金融方面的软件,画图的操作很多,用MFC做的切换视图也很多,反正机器是挺慢的,内存泄漏还不少!来学习下有什么好的解决方案
------解决方案--------------------
UP
------解决方案--------------------
UP
------解决方案--------------------
正如楼主所说的,一次申请,一次释放是最理想的。
但要说明一点,在堆上一次申请, 然后,程序代码中所有的内存分配/释放管理可以基于这个全局的堆空间。
通常,程序运行中,有些内存的申请/释放不是由程序所能控制的,由操作系统OS进行调度处理,但OS也并
非完全智能的,也就是说,它不知道你的程序在做什么,这样OS的对内存的调度可能会起到相反的作用。
试着用下面这个重新整理进程空间的API:

SetProcessWorkingSetSize

不知道WinCE上有没有类似的。
------解决方案--------------------
学习啊
------解决方案--------------------
用内存池管理阿
------解决方案--------------------
1.少用new,delete,尽量在栈上分配空间,会不会好一些。

2.用多少,分配多少,不分配多余的缓冲区。
------解决方案--------------------
频繁创建释放GDI对象和内存的设计,本身就有问题
碎片的问题应该在模块设计的地方避免,而不是在技术细节上处理
我分析过STL的内存池,也写过基于内存池的小内存分配器,效果并不明显,效率也比较低
最终还是在系统数据结构上重新处理才达到满意效果
------解决方案--------------------
不知是否可以自己见一个资源管理器,把以前用过的资源暂时不释放,以备重用,可以参考游戏资源管理
------解决方案--------------------
自己实现内存池的管理,不过这种方法能否满足所有的应用,就要看实际的需求了,
难搞!!!
------解决方案--------------------
up navi_dx
------解决方案--------------------
很好!学习收藏了!
------解决方案--------------------
Thank you!
------解决方案--------------------
up
------解决方案--------------------
UP
------解决方案--------------------
很好!
------解决方案--------------------
内存的东西确实不好弄,关注一下了!不知道CE下有没好的内存监视工具!
------解决方案--------------------
关注~~
------解决方案--------------------
关注 学习
------解决方案--------------------
jf
------解决方案--------------------
很奇怪的是资源自己分配自己释放的时候
退出时系统会提示assert failed错误

此外
在连续刷新界面后,界面会出现绘图失败的情况,特别是快速操作的时候
个人怀疑是内存方面的问题
但是由于是在模拟器上运行
看不到内存变化情况
------解决方案--------------------
我的情况和楼主的差不多,也是做PDA手持设备的,用户经常要在上面点,界面要经常刷新!
我的处理方式跟楼主讲的差不多,在OnEraseBkgnd里面,用内存DC一次性画上去,我也用了很多的Invalidate()函数,但没考虑到那么深,呵呵,我感觉我是在函数内部定义的CDC对象指针,应该执行完后系统会自动释放回收!


不过我最近在弄这样一个问题: 《要实现一幅位图在屏幕上移动的时候,能够显示它移动的轨迹,》

 要达到这个效果,是不是只能用屏幕DC来画,用内存DC能不能够实现?
 我之前是用内存DC来画,然后一次性BitBlt到屏幕DC上,但是这样的效果是,移动位图是静态的,位图从一个地方突然出 现在另一个地方,没有动态移动的效果。


我最初的想法是:想在函数里面多次调用Invalidate(),动一次我就刷一次,但看了这篇文章之后,让我有点不敢这样做了,怕会很浪费资源,请问各位高手有没有好的高招??

文章评论

代码女神横空出世
代码女神横空出世
我的丈夫是个程序员
我的丈夫是个程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员和编码员之间的区别
程序员和编码员之间的区别
编程语言是女人
编程语言是女人
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
为什么程序员都是夜猫子
为什么程序员都是夜猫子
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
10个调试和排错的小建议
10个调试和排错的小建议
Java程序员必看电影
Java程序员必看电影
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
鲜为人知的编程真相
鲜为人知的编程真相
老程序员的下场
老程序员的下场
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
总结2014中国互联网十大段子
总结2014中国互联网十大段子
 程序员的样子
程序员的样子
程序员必看的十大电影
程序员必看的十大电影
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员应该关注的一些事儿
程序员应该关注的一些事儿
那些争议最大的编程观点
那些争议最大的编程观点
如何成为一名黑客
如何成为一名黑客
一个程序员的时间管理
一个程序员的时间管理
我是如何打败拖延症的
我是如何打败拖延症的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
每天工作4小时的程序员
每天工作4小时的程序员
漫画:程序员的工作
漫画:程序员的工作
中美印日四国程序员比较
中美印日四国程序员比较
程序员都该阅读的书
程序员都该阅读的书
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有