系统资源占用问题(100分)

  • 主题发起人 主题发起人 滨滨
  • 开始时间 开始时间

滨滨

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi开发了个数据库应用程序,有的表需要近二十个字段,还包含不少Lookup字段,结果程序在很多机器上不稳定,我发现资源占用很大,最高时用了30%的系统资源,我已经尽量优化了,每个子窗口都是create/Free调用的,如何再优化呢?
仔细检查了程序,应该没有泄漏。
主程序一般占5%的资源,但子窗口(包含几十个DBEdit等控件)一打开,资源就极剧下降,直到关闭这个窗口(我调用了Free),资源恢复到主窗口的状态。
我指的资源是系统资源监视器中的资源情况,其中有系统资源,用户资源和GDI资源。我的程序要吃掉近30%,也就是说当运行我的程序前要是还开着IE和其他程序,就很不稳定,经常出现win32 API调用失败的错误。这些API调用一般是与ComboBox,ListBox相关的。但我的程序中这类控件还没有什么数据,(1-2条测试数据),我担心投入使用以后数据量一大,不是更不稳定?

经测试后发现:
1、为了界面美观(用户希望接按网页的那种感觉)窗体背景是浅蓝色,对应的Edit/DBEdit/DBGrid的背景色改为天蓝色$00FFF0E0,经发现占用资源严重,将控件的颜色恢复到clWindow后有比较大的改观,看来鱼和熊掌不可兼得啊。
2、我没有使用TLabel控件,而是用了Panel作成文字框作为编辑框的文字说明,改回Label后有改观.

我发现Photoshop,Premiere这样的大型软件启动后也不过占9%的系统资源,启动后无论开多少窗口,图层加多少层,资源占用都不再有太大的变化,一般只减少2%-5%,而我的一个窗体就占11%-15%的资源,这是为什么?
我现在采用的办法是启动时以及开子窗口前检测资源,少于20%就提示错误请关闭一些应用程序。没有办法的办法了。
资源是最让人头痛的了,我的机器内存不小,384M,但资源不等于内存(如GDI资源),IE开十个窗口也会不稳定。奇怪的是,我在一些低档机器上开近二十个窗口也不出错,系统资源的使用是什么因素起作用?

还有,系统资源在NT下是不是就没有这个问题了,因为我查到的关于系统资源占用的未公开API都是16位函数。
欢迎大家继续讨论!

 
>>384M内存,IE开十个窗口也会不稳定。
你的系统有问题,大问题!我的128M的机器,开30多个IE没有任何问题。建议更换内存、主板、CPU...
把每个零件能换的都换一遍,找到不稳定的原因所在,根除之!

系统的资源和你的程序中使用Handle的多少有密切的关系,Win9x好像只能同时存在60000个左右的Handle。
Photo Shop之类的软件虽然算法比较复杂,但界面简单,因此内存消耗虽然大,但是Handle资源消耗不多。
你可以试一试使用Delphi的运行时刻库*.bpl,用了它,exe文件占用的内存有望减少很多。
 
你可以动态的创建窗口 动态的释放
这样在系统启动的时候只有一个主窗体在运行
 
我已经使用了动态创建的办法。
甚至,在启动时和创建每个子窗口前都先检查资源占用情况,不足则报错。
 
看来是你的系统的问题!你的是不是98吖!
98 加到64M内存以后变化就不明显了,真怀疑98能不能正常的用到64M以后的内存

换2000试一试,还是不错的,我的256M在2000下面跑,经常开IE,delphi,Winamp,金山词霸
等一堆程序,正常的很
 
其实,动态创建也会有不足的地方,即主窗口占用资源不多时能够启动,但程序启动完成后,用户再切换到系统运行其他应用程序消耗资源之后再切抽换回来执行子窗口功能,此时子窗口可能创建失败,或显示不正常。
特别是ComboBox的Listbox控件最容易出问题。要避免此问题,在子窗口创建前还需要增加代码检查资源占用情况,这就是我目前的方法,不知大家有什么高见?
 
可是我是为别人开发软件,不能要求他们全装win2000啊,我在自己的机器上试有时出错,在另一台低档机器上反而不出错。
在有的用户机器上也会出错,我做的是网络C/S数据库程序,有多台电脑要运行此程序,必须保证稳定性。
 
>>网络C/S数据库程序
服务器端显然要用Win2000,>256M;客户端用Win98,>64M。
你的程序到底怎么做的,一个客户端要消耗如此多的资源?我做了一个小软件,至少有200个控件,
才占用了不到8%的系统资源。把你的程序的具体情况说一下,多少窗体、多少表、主窗体上都有什么...
 
你重装你的windows与delphi,还有delphi补丁看看,我的数据库的字段与控件比你还多我没
有这个现象,别外有一些没用的控件不要装上,也许就是那些控件在做怪。
 
还是前面的发现:使用非Windows标准色,将占用较多资源!

我把Panel的颜色改为clBtnFace后,每个Form至少减少占用3%的资源。
可是我用户对界面也有要求,希望象网页一样:(,我使用的界面颜色全为:
$00FFF5E5
 
这种颜色很象大富翁论坛的风格哦。
大家给占建议,看看鱼与熊掌如何兼得?
 
尽量少用Panel,这玩意儿占用的资源太多!

>>用户对界面也有要求
功能第一、效果第二。
你先做一个最“朴实”的版本,把功能都实现了,然后再用几个第三方控件——什么都结了。
 
我觉得是不是因为你使用数据感知控件的原因呀,这中东西最好少用,它是只要在感知控件
中有所改变,就会自动连接数据库,这样的话应该是会消耗系统资源的。不过具体没有试过
该该看看吧
 
开发c/s数据库怎能用DBEdit,改Edit,会明显加快。
 
后退
顶部