程序长时间不用,再用时变慢(200分)

  • 主题发起人 主题发起人 hitman007260
  • 开始时间 开始时间
H

hitman007260

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中为了增加速度,将图片以tbitmap的形式保存在内存中,然后处理后显示出来,
速度不错,可是程序长时间不用,再用时,就非常慢,操作一会就变快了,看
windows的内存管理器,程序所占用内存变少了,操作一会内存占用就便多了,是不是变慢的原因就是因为系统对内存的管理,如果长时间不用就把内存占用给释放了??如果是这个原因的话如何解决?用定时器搞个心跳吗?我让程序每隔10秒刷新一次,还是不行,
如何让图片一直占用内存??
 
try
finally
except
free
end;
 
楼上发错误处理是什么意思??
第一bitmap在内存中没处错误。
第二 也不是想把bitmap从内存中free掉,而是不让系统把它从内存转移了,好加快速度。
 
嘿嘿!只要你是京城,就算自己分配的内存在Move保存数据(含bmp),只要其他程序
提出内存请求而你的程序暂时不用到分配的内存时,比耳也会暂时叫你到硬盘上
休息一下的,因为只有遮掩Windows才是多任务系统!呵呵!unix也一样,哈哈!
 
那我如何强制让bmp占据内存??
我每隔一段时间让他使用,可是如何使用哪〉?我刷新程序也没效果阿??
 
来自:hitman007260, 时间:2008-11-17 15:08:31, ID:3930520
那我如何强制让bmp占据内存??
我每隔一段时间让他使用,可是如何使用哪〉?我刷新程序也没效果阿??

-------------------------------------------那很简单啊,回个TIMER,一段时间刷新一下.至于多少时间,自己按需要来设
 
用定时器搞个心跳,我让程序每隔10秒刷新一次,还是不行,
如何刷新bitmap?
 
编dll,用内存映射文件!
 
如何 编dll,用内存映射文件! ??
楼上能给个例子吗??
 
全文检索里面多的是内存隐射的离子!
 
内存影射不好用吧,我的bitmap已经在内存了!
关联内存映射的好处是操作方便,直接访问相关地址即可,其他的事情由系统来自动完成.比如,只有在需要时,系统才会提交物理内存,并读入文件的某一部分..但是,也有一些问题,比如,我不知道如何人为地控制其虚拟内存的提交和释放?那么,在多次访问一个较大文件的各个部分后,就会占用了大量的物理RAM..关于速度,我想,主要的瓶颈在于磁盘~如果一次要从中读出(或写入)大量数据,应该是需要一些时间的..如果机器的物理RAM比较小的话,则可能导致还要把之前读入RAM的磁盘数据写到页面文件中,那就更慢了..最后,如果按照常规方法打开文件(CreateFile),并且只读取一小部分的话(ReadFile),单单这个操作,应该是不需要多少时间的吧..所以,我还是倾向于分配少量内存,然后根据用户操作来读取需要的部分--------刘麻子
 
估计你的图片比较大,占用内存比较多,我觉得你的这个现象的原因是操作系统内存调度产生的,也就是说一个程序长时间不用(最小化,或切换到其他程序运行),操作系统把你的程序所占内存“换出”到虚拟内存区(实际上就是硬盘),而把物理内存空间释放出来给其他应用程序使用。当你再用时,从虚拟内存中“换入”到物理内存,这样你就感觉操作速度变慢了。
 
我觉得
该上点润滑油了
 
VirtualLock
如何解决??
 
同意Tuatara
处理最有效就是增加机器硬件——内存。
 
禁止空闲时把内存数据写到磁盘缓冲,再禁止空闲磁盘整理看看呢
 
最好还是在程序中解决
 
查下msdn看看VirtualLock是什么用的
 
最好的方法是不用TBITMAP存图象,把图象放到一个2维数组里面去!这样绝对不会内存溢出!
 
后退
顶部