怎么我的程序不能释放内存? 我的窗体除了主窗体是自动创建,然后全部窗体(包括数据库组件)都是需要是动态创建的,但在使用完后都用destroy进行释放,但我通过windows的任务管理器查看到占用的内存并不会随窗体的释放而减少。请问是什么原因? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Create -> Free 对应 windows的任务管理器并不能实时反应内存的变化,你用其他的工具查看一下,窗体释放后的5秒之内,内存确实是释放了的with TFmSub.Create(self) dobegin try showmodal; finally free; end;end; windows的任务管理器也看不出内存减小, 那个只是大概 释放的时候用Free在Free方法中会判断对象本身是否为nil,如果不为才调用对象destroy的。这样增加安全性. windows的任务管理器也看不出内存减小 destroy大都是程序自己调用的 释放的话上面的人都说了 还是用FREE,并且WINDOWS的任务管理器也不会准确的反映你的使用情况的 要做到资源的合理的管理和内存的正确回收需要注意以下几个方面的内容:1、动态创建的对象能够显式的释放: 如上面各位兄第所说的,在窗体程序中自动创建后能显式的(就是直接调用free了) 将其销毁,而不是默认由Delphi自己释放。2、动态的打开文件或数据库表: 使用的时候再打开,不用的时候就Close掉3、动态分配的内存最好显式的回收 方法与上面的相似,如:对变长数组的引用,如果无用后应该把数组的长度设为一个适应 的最小值。就行了。 SOAP服务器上传数据时must enable multiref output 的问题 删除行的问题. 如何打开一个任意文件,在里面查找一个字串,并返回该字串后到文件尾的字串。 如何控制Excel中的菜单选项? 日期判断 急:报表问题!!!请赐教! 如何获得IdTCPServer里面的客户端的IP? TQuery批量處理一問? 我想知道一些关于记录的问题(type Record)希望大家帮助! Delphi源码上的问题,有兴趣者请进 如何通过DELPHI操作WINDOWS系统中的按钮和文本框? 求教FastReport3.03的一个打印问题!(急)
with TFmSub.Create(self) do
begin
try
showmodal;
finally
free;
end;
end;
在Free方法中会判断对象本身是否为nil,如果不为才调用对象destroy的。这样增加安全性.
1、动态创建的对象能够显式的释放:
如上面各位兄第所说的,在窗体程序中自动创建后能显式的(就是直接调用free了)
将其销毁,而不是默认由Delphi自己释放。
2、动态的打开文件或数据库表:
使用的时候再打开,不用的时候就Close掉
3、动态分配的内存最好显式的回收
方法与上面的相似,如:对变长数组的引用,如果无用后应该把数组的长度设为一个适应
的最小值。
就行了。