触摸屏系统内存被大量占用,200分寻求解决之法。 ( 积分: 200 )

  • 主题发起人 主题发起人 webwalker
  • 开始时间 开始时间
W

webwalker

Unregistered / Unconfirmed
GUEST, unregistred user!
触摸屏系统,每个窗口有一些大的bmp贴图(最大的背景图片有1.4M),最多同时打开4个窗体,起初打开四个窗体时占用内存不到30M,经过一番窗体切换后,占用的内存竟然有100多M,按道理说,在窗体释放后,其拥有的控件会被释放,难道内存中的图片没有被释放?还有,有没有其他更好的解决方式?
 
触摸屏系统,每个窗口有一些大的bmp贴图(最大的背景图片有1.4M),最多同时打开4个窗体,起初打开四个窗体时占用内存不到30M,经过一番窗体切换后,占用的内存竟然有100多M,按道理说,在窗体释放后,其拥有的控件会被释放,难道内存中的图片没有被释放?还有,有没有其他更好的解决方式?
 
说明你没释放干净..
 
换jpeg的图片呢?
 
把图以文件保存到文件夹了在窗体创建是载入图片或贴图!
 
图片文件是保存在硬盘中的,创建窗体时载入。
我也怀疑是没释放干净,但是当一个Form被Close&Free掉以后,他上面的控件难道不是也被释放掉了吗。
接触过类似程序的朋友还请多多帮忙。
 
Jpeg图片的载入可能会比Bmp慢,他需要解压,界面切换时会图片载入的慢些闪烁的利害。
 
你的触摸屏用什么做的?asp/autoware?
 
你可以试一下在窗体的Paint事件中把图片画出来,这样占用的内存资源较少,同时没有切换窗口时的闪动问题。
 
问题找到了,不过很困惑,delphi的窗体关闭是如何释放内存的,Free、FreeAndNil、caFree都好像不太管用,创建窗体(即使是干净的没有几个控件的)被关闭后也是不能回收被占用的内存,是与Windows内存管理方式有关吗?
好像不创建实体的方式倒是可以如:
With TForm1.Create(nil) do
begin
ShowModal;
Free;
end;
为什么?上面的问题就是被改成这样的方式,每个窗体图片所占用内存才还给我的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部