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