2

私は常に「ランタイムパッケージでビルド」せずにデルファイアプリをコンパイルしますが、最新のプロジェクトではそれを使用する必要がありました(日に日に膨らみ始めたため)。サードパーティの VCL を使用しています (ソース コードを含む TMS コンポーネント パック、ソース コード ディレクトリも検索パスにあります)。

ランタイムパッケージでビルドしてコンパイルすると、bplパッケージ全体が実行時にアプリによって使用されます(そうでない場合、パッケージ内の必要なvclのみをアプリに準拠させます)ので、多くのRAMメモリを消費すると思います(通常、私のアプリは38 MbのRAMを使用しますが、現在62 Mb (Windows タスク マネージャーによると、tms だけでなく、他の多くの vcl も使用しています)。

単一のexeとしてコンパイルされたように、アプリのメモリ消費量を少なくする方法はありますか?

(必要な vcl のみを使用して VCL パッケージを再コンパイルすることは知っていますが(ソースを持っています)、ソースを掘り下げて必要な vcl とサブプログラムを見つけるのは難しすぎます)

4

2 に答える 2

8

私はあなたが間違ったことを測定していると思います。パッケージファイルは大きくなりますが、必ずしもプログラムが RAM のより多くのスペースを占有しているとは限りません。コンパイラは、特定のプログラムが使用する部分に関係なく、パッケージ内のすべての関数とユニットのコードを含める必要がありますが、それはすべてのコードがメモリに読み込まれることを意味しません。OS は必要なページを読み込みます。残りは引き続きディスク上の元の BPL ファイルに存在します。BPL ファイル全体がアドレス空間を占有しますが、物理 RAM にはロードされないため、OS がプロセスに許可する 2 GB のアドレス空間全体を実際に使用する危険がない限り、心配する必要はありません。

于 2010-11-07T16:28:29.750 に答える
0

パッケージは DLL であり、動作させるにはメモリにロードする必要があります。また、各パッケージには、それが構築されたすべてのユニットのコードが含まれます。これにより、ランタイム パッケージを使用してビルドされた exe よりも多くのメモリを使用できますが、増加量が少し大きすぎるように見えます。一方、複数のアプリケーションが同じパッケージを使用し、それらが適切にインストールされている場合、それらのコードは一度メモリにロードされます。アドホック パッケージをビルドすることもできますが、標準の名前とは異なる名前を使用するように十分注意する必要があります。そうしないと、特にパッケージを共有の場所やパスの最初のディレクトリに配置した場合に、他のアプリケーションが壊れる可能性があります。 . それらを試す前に、アプリケーションが未使用のパッケージをリンクしていないことを確認します。Delphi は、多かれ少なかれ認識しているすべてのパッケージをオプションに入れます。

于 2010-11-07T15:17:09.697 に答える