delphi内存占用

kfcoffe 2010-01-08 09:22:42
程序中组件用的稍微比较多的时候,程序一启动就吃掉10几M内存,大家是如何解决这个问题地?
而且发现像Opendialog...这样的组件只要1打开就会吃掉6M左右,并且不会减少,我仔细检查过程序,不应该是内存泄露的问题,难道delphi本身就有这个问题。
...全文
190 点赞 收藏 15
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kfcoffe 2010-01-11
up
回复
ye091032 2010-01-09
这种方法只使用于windows2000以上,安全模式没试过
所以使用前要判断系统类型
回复
kfcoffe 2010-01-09
up
回复
kfcoffe 2010-01-08
[Quote=引用 4 楼 hongqi162 的回复:]
那是因为你有占内存的操作呗,看看是不是什么stream之类的操作
[/Quote]

没有,纯粹是拉的组件比较多。因为我程序主要功能就是编辑txt文件。
回复
hongqi162 2010-01-08
那是因为你有占内存的操作呗,看看是不是什么stream之类的操作
回复
kfcoffe 2010-01-08
期待高人指点
回复
lhy 2010-01-08
现在就这个行情,都是多少M的。
你把程序最小化,然后还原,可能会释放一些内存。
回复
haochin 2010-01-08
这个不懂,不过才几M的内存不多的,50M以下完全可以接受。
回复
kfcoffe 2010-01-08
[Quote=引用 11 楼 bear_hx 的回复:]
程序占用内存是由于申请内存造成,如果要降低物理内存,可以把物理内存刷为虚拟内存,不过会降低程序速度,刷新内存函数
begin
  SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;
[/Quote]

这个确实可以达到减少当前占用的内存,但是好像治标不治本啊。只是暂时的将物理内存移到虚拟内存去吧。
而且程序效率也会受到影响。

期待更好的办法.....
回复
Bear_hx 2010-01-08
程序占用内存是由于申请内存造成,如果要降低物理内存,可以把物理内存刷为虚拟内存,不过会降低程序速度,刷新内存函数
begin
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;
回复
owlet_leo 2010-01-08
不能完全说是Delphi的问题。
都这样,只不过,M$自己有特别的优化并且用的多是延迟加载。
不信的话你用Visual Studio静态连编一个MFC程序看看。
Delphi拖拽控件多是静态加载的,随程序启动时一起加载。所以看起来貌似占内存,如果你也用动态加载就可以减少启动时的内存使用量。
回复
kfcoffe 2010-01-08
up
回复
a67975176 2010-01-08
去掉一些怀疑的组件看看!
回复
dd_zhouqian 2010-01-08
如果简单的就自己模拟若干次操作来查看内存占用情况
回复
dd_zhouqian 2010-01-08
程序运行个3、5天后看内存变化情况
回复
发动态
发帖子
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
社区公告
暂无公告