请教:如何进行内存整理?类似优化大师的内存整理功能

dasiu 2005-07-12 10:16:19
请教:最近做了一个工具软件,但遇到一个瓶颈,如何定时自动对系统内存进行整理呢?类似优化大师等软件的功能。
请各位发表意见。有没有相应的函数或解决方案或算法呢?抑或是有现成的控件或源码?
...全文
155 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dasiu 2005-07-14
  • 打赏
  • 举报
回复
各位在做监视控制类软件的时候,有没有遇到这样的问题/大家是如何处理的?
dasiu 2005-07-14
  • 打赏
  • 举报
回复
其实并不象楼上所说的,在这个程序中,我很少用到对HEAP的操作,大部分的变量用的都是类内的PRIVATE类型的,不存在HEAP和STACK的问题。
但是,在长期运行中,(我这个是一个监视软件),由于需要接受COM口的数据、刷新显示、数据保存,造成了内存碎片。无法释放。。。。。》》
dasiu 2005-07-13
  • 打赏
  • 举报
回复
明白一点了。
那:关于隐形的内存泄漏(通过DEBUG下的工具、或BOUNDSCHECKER找不到内存泄漏,但是在程序运行中,却会看到内存使用缓慢增加,并且没有下降的痕迹),大家有什么好的建议或经验吗?
oyd 2005-07-13
  • 打赏
  • 举报
回复
用简单的垃圾回收机制吧。
另外,搞不明白,你为什么一定要这么多在堆上分配的内存呢。尽量用栈来代替。如果实在要new一个什么对象来长期利用,把new得到的指针放到一个容器中。
oyljerry 2005-07-13
  • 打赏
  • 举报
回复
还是要养成良好的编程习惯,申请了资源,记得释放
newbiestar 2005-07-12
  • 打赏
  • 举报
回复
你这个没办法整,因为这个是在你的进程空间,整理最多只能完成物理空间和Pagefile里面的整理,进程空间的没办法的,因为你有可能还握有某段地址的控制权,而强制整理的话,你的控制权怎么办?很难控制的……
dasiu 2005-07-12
  • 打赏
  • 举报
回复
之所以这样作,是由于我在以前进行某个实时监控系统程序设计的时候,
发现程序的内存使用会以1M/小时的速度增加(不是内存泄漏,可能是内存碎片在多次操作中无法释放造成)
并且一直不释放(程序使用了4个定时器、需要读写数据库、刷新界面显示等操作),
我担心这个系统运行久了会导致内存崩溃。
因此,想通过定时内存整理的办法来解决。

如果说通过内存整理效果不大的话,对于这类实时监控类的软件,由于需要频繁读写、刷新等,必定造成许多内存碎片,如何防止内存用完造成系统崩溃呢?
flashboy 2005-07-12
  • 打赏
  • 举报
回复
在一般很难达到什么好的效果.这些系统应该有自己的整理策略.
newbiestar 2005-07-12
  • 打赏
  • 举报
回复
连kernel的范围你都想搞?这个是kernel的功能哎……

说实话严重怀疑内存整理到底有多少效果……

最简单的,疯狂分配,然后一次释放,这样会强迫kernel来重整内存……

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧