2009-07-13 12 views
1

私のプロセスがWindows上で持っている空き仮想アドレス空間の量はどのようにして計算できますか?Windowsで空きアドレス空間を計算するにはどうすればよいですか?

私のアプリケーションでは、使用するアドレス空間の量を制限する必要があります。だから私は消費したメモリの数と仮想メモリの残量を見積もる必要があります。数百メガバイトのアドレス空間が残っていると、私のプロセスはカスタムページングシステムを使用して、メモリ内の多くのデータへのロードを回避します。

さらに重要:私は自分のプロセスのみを気にするので、これはプロセスごとに計算する必要があります。私はまだWin32を使用しています。

私はVirtualQuery()を試しましたが、残っている合計アドレススペースを返していません。

ありがとうございます。

答えて

0

C++を使用している場合は、カスタムメモリアロケータを使用できます。しかし、たぶんあなたはすべてのメモリ割り当てを追跡する必要はなく、プログラムの大部分のメモリ集中部分だけが必要です。

1つのオプションは、起動時にメモリブロックを割り当て、LRUキャッシュを使用して割り当てられたメモリブロックを再利用し、最も最近使用されたデータのみをメモリに保持することです。あなたのプログラムも速くなり(ランタイム中に割り当ては不要です)、メモリの割り当て/解放によるメモリの断片化を防ぐことができます。

1

Win32 APIのGlobalMemoryStatusEx関数を使用します。興味のあるフィールドは、ullAvailVirtualです。これは、プロセスによって予約またはコミットされていない仮想空間のバイト数です。

関連する問題