5

UPX コンプレッサーを使用して、Delphi XE で記述されたアプリケーションを圧縮しています。ファイルサイズは約 32 Mb から 8 Mb になります。

しかし、奇妙なことに、圧縮ファイルを実行すると RAM の占有率が大幅に増加することに気付きました。25/30 Mb から約 80 Mb になります。これは正常ですか、それとも維持する必要がある問題ですか? 私の場合、アプリケーションは複数のユーザーがいる Windows Server 2008 リモート デスクトップ モードで実行されるため、システムの重量が不釣り合いに大きくなります。

なぜこれが起こるのですか?どうすればこの問題を解決できますか?

4

1 に答える 1

22

これがEXEコンプレッサーの仕組みです。実行可能コードではなく、ディスクファイルを圧縮します。圧縮ファイルを再度実行可能にするには、圧縮を解除する必要があり、その非圧縮データはメモリに保存されます。通常の非圧縮EXEファイルでは、OSは現時点で必要なファイルの部分のみをロードします。残りはディスクにとどまることができます。非圧縮アプリケーション全体がメモリ内にあるため、メモリ使用量が高く表示されます。

さらに、ディスクファイルは複数のユーザーで共有できますが、非圧縮の実行可能ファイルを含むメモリは共有されません。プログラムを実行している各ユーザーは、非圧縮プログラムの個別のコピーを持っています。

プログラムを圧縮することで節約できる26MBのディスク容量は、共有リモートデスクトップサーバーでは実質的に何もありません。わざわざファイルを圧縮しないでください。配布中の帯域幅を節約するためにファイルを圧縮する場合は、誰かが実行するたびにファイルを解凍する必要があるEXEコンプレッサーではなく、インストール時に1回ファイルを解凍するインストーラーにプログラムをパッケージ化します。

于 2012-02-09T22:17:35.910 に答える