多线程程序内存释放的问题(急,拖了好久的程序)(50分)

  • 主题发起人 主题发起人 systermman
  • 开始时间 开始时间
S

systermman

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序是Pos机上传黑名单的程序,有多少台pos机就有多少个线程,程序要一直开着,线程是自动释放的(FreeOnterminate=true),如果我不去动这个程序的话内存会慢慢的增加,如果我先“最大化”然后“最小化”,内存一下子降下来,不知道是什么原因,求大家帮帮忙!!!。
 
访问消息队列了??. 不会是application.ProcessMessages>
 
每个线程执行完,我都有做一次:application.ProcessMessages,通常是5几个线程。
 
自定义的消息,主要是线程间的通讯。
 
我也碰到过这个问题,是程序占用的虚拟内存很多,后来在网上找个帖子
//定时器清理内存
procedure TServerMainForm.TimerClearMemoryTimer(Sender: TObject);
procedure ClearMemory;
begin
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
Application.ProcessMessages;
end;
begin
ClearMemory;
end;
好象有点用,楼主不妨试试。
 
是否是定时的清理一下内存吗?该句在定时器里执行?
 
最大化然后最小化程序以后程序的内存占用会减少很多,没个程序都会有这种情况是因为程序没有重画窗体了,这是很正常的,如果是一个console程序就不会出现这种情况了,如果你的程序在运行中内存一直增加可能是有的地方造成内存泄露了,这个就要检查一下你的程序了。
 
如果内存没泄露的请况下,是否要像japhe说的要清理内存呢?还有,我的线程是自动释放的,自动释放的方式是否不好?
 
来自:systermman, 时间:2006-4-27 10:13:21, ID:3428335
是否是定时的清理一下内存吗?该句在定时器里执行?
上面清理内存代码是针对整个进程的
在主窗体上放个定时器,定时10秒执行
 
结贴了,谢谢!!
 
揭贴了!!
 
后退
顶部