私のDelphiXEアプリケーションは、RemObjectsによって作成されたローカルサーバーDLLを使用する単一のEXEに基づいており、十分なメモリがないという例外を生成するまで、特定の操作に大量のメモリを使用します。だから私はこれが起こっている理由と場所を理解しようとしているので、メモリ使用量を報告するコード全体にさまざまなステップを配置しました。問題は、メモリ使用量情報を取得するために使用される方法に基づいて、非常に異なる情報を取得していることです。
FastMMにクライアントEXEとサーバーDLLの両方を直接要求するここで説明する方法を使用すると、次のようになります。
- ステップ1:[クライアント]=36664572-[サーバー]=3274976
- ステップ2:[クライアント]=62641230-[サーバー]=44430224
- ステップ3:[クライアント]=66665630-[サーバー]=44430224
ここで説明したGetProcessMemoryInfoを使用するメソッドを使用すると、はるかに多くのメモリ使用量が得られます。
- ステップ1:[プロセス] = 133722112
- ステップ2:[プロセス] = 1072115712
- ステップ3:[プロセス] = 1075818496
私のメモリの問題に基づいて、2番目の方法が正しいように見えますが、FastMMの方法をどのように「低く」することができますか?そして、何が違いを説明できますか?