我正在使用Delphi2007使用TIBDataSet从火鸟数据库表中获取记录。该表中大约有100万条记录,我收到了Out of memory错误。不过,同样的查询在TClientDataset中也能正确运行。
您能告诉我TClientDataset和TDataSet在内存管理方面的区别吗?
发布于 2013-04-04 17:52:19
@alzaimar有一点,无论你使用什么数据集组件,在32位平台上加载到内存中的数百万条记录都将是一个挑战。
所以盒子上的记忆是至关重要的。
我们用Delphi2006编写的应用程序也做了类似的事情。我们所做的是在64位的Windows7或服务器2008的64位上运行它们。
为操作系统和其他应用程序利用额外的内存。
试试The best memory manager for Delphi
另外,将{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}放入您的项目源代码中,以便在64位机器上获得最高4 4GB的32位delphi。
program Project15;
uses
Forms,
Unit15 in 'Unit15.pas' {Form15};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
Application.Initialize;
Application.CreateForm(TForm15, Form15);
Application.Run;
end.通过执行上述操作,您可以看到最适合您的应用程序的是TDataSet还是TClientDatset。
您还可以考虑使用一些第三方数据连接组件,这些组件比基本的Delphi数据对象具有更好的性能和内存管理。
我们使用Devart组件和SQL工具,它们确实物有所值。Devart Data tools website
https://stackoverflow.com/questions/14037431
复制相似问题