2011-01-10 11 views
2

元のプログラムとの干渉が大きすぎるため、AQTimeを使用するのが難しいと感じています。たとえば、300MBのRAMを使用するプログラムを使用している場合、問題なくAQTimeの割り当てプロファイラを使用して、メモリの大部分が使用されている場所を調べることができます。しかし、私はAQTimeの下で動作していることに気がつきました。元のプログラムは、プロファイルされている間に1GBのようなものを使用しています。大量のメモリを使用するプログラムでAQTimeのメモリ割り当てプロファイラを使用するにはどうすればよいですか?

今は1.4GBのメモリを使用しているプログラムでメモリ使用量を減らそうとしています。私がAQTimeの下で実行すると、元のプログラムは2GBのアドレス空間をすべて使用してクラッシュします。私は当然ながら、より小さなテストデータセットを作り、完全なデータセットでメモリ使用量をどのようにスケーリングするかを見積もることができますが、私が最初にプロファイラを使用しているのは、このような推測を避けることです。

私は既にAQTimeが 'スタック情報を収集する - なし'に設定されており、メモリの整合性をチェックするためのすべてのチェックボックスがオフになっています。プロファイルされている領域をわずかなクラスに制限しようとしましたが、何も改善していないようだ。より少ないオーバーヘッドを生成するAQTimeを使用する方法はありますか?そうでないと、使用されているメモリの良いアイデアを得るために他にどのようなアプローチがありますか?

アプリはデルファイ2010年に書かれていると私はAQtimeは6に

NBを使用しています:メモリ使用量の増加と上に、AQtimeは下で実行することだけではなく、全体の運動をする、非常に多くのアプリを遅く不可能ですが実用的ではありません.-P

答えて

0

AFAIK割り当てプロファイラは、プロファイリングエリアに関係なくメモリブロック割り当てを追跡します。プロファイリング領域は、クラスのインスタンス化を追跡するために使用されます。もちろん、大量のメモリを割り当てるアプリケーションのメモリプロファイリングが問題になる場合は、LARGE_ADRESS_AWAREフラグと/ 3GBブートスイッチを使用するか、64ビットシステムを使用することができます(少なくとも4GBのメモリ、またはそれ以上)。また、クラッシュする前にアプリケーション状態のスナップショットを取って、メモリがどこに割り当てられているかを確認することもできます。プロファイリングには時間がかかりますが、しばらく実行する必要があります。

関連する問題