4

TIBDataSetDelphi 2007を使用してFirebirdデータベーステーブルからレコードをフェッチするために使用しています。そのテーブルには約100万のレコードがあり、エラーOut of memoryが発生します。ただし、同じクエリが正しく実行されTClientDatasetます。

メモリ管理とメモリ管理の違いを教えてくださいTClientDatasetTDataSet

4

1 に答える 1

-1

@alzaimar にはポイントがあります。32 ビット プラットフォームのメモリに読み込まれる何百万ものレコードは、使用するデータセット コンポーネントが何であれ、課題になるでしょう。

そのため、ボックスのメモリは非常に重要です。

Delphi 2006 で作成されたアプリケーションでも同様のことを行います。Windows7 64 ビットまたはサーバー 2008 64 ビットでそれらを実行します。

OS やその他のアプリケーション用に追加メモリを活用します。

Delphi に最適なメモリ マネージャを試す

また、{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} を yur プロジェクトのソースに配置して、64 ビット ボックスで 32 ビット Delphi から最大 4 GB を取得します。

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 ツールの Web サイト

于 2013-04-04T09:52:18.853 に答える