2010-12-12 9 views
3

私のシステム(debianx64)では、ページサイズは4096バイトです。それを減らす可能性はありますか?私はメモリにたくさんの小さな断片を保存したいと思いますが、1バイトの予約でさえ、ここでは1番目のメッセージに追加されたもののために別の4095を使うことはできません。 それは本当ですか、それとも間違っていますか? できますか? 返信用のThx。C++メモリページサイズを4096バイトから減らす

+1

重複http://stackoverflow.com/questions/4420891/c-new-new-how-is-it-allocating-memory。 – Nate

答えて

10

4096は、x86プラットフォームで提供される最小のページサイズです。これはCPUによって課される制限です。より大きなサイズ(モードに応じて最大4MB)を提供しますが、これは通常ブート時にオペレーティングシステムによって選択されます。

あなたはになります。は、object poolのバッキングストアとして比較的大きな割り当てを行います。多くの小さなオブジェクトが必要な場合、それらはすべて単一のページまたはメモリ領域内に格納することができます。これは、メモリ割り当てのパフォーマンスを向上させるための共通の慣用表現です。

さらに、ほとんどのsaneメモリアロケータはこのように動作します。したがって、必要なプロファイリングが見つからない限り、オブジェクトプールを実装する必要はありません。

1

ページサイズはOS全体のアイテムです。ページフォルトロジックは他のすべてのプロセスで動作する必要があるため、アプリケーションの新しいページサイズを作成するだけでは不十分です。

あなたは何をしようとしているのかよく分かりません。私はあなたがこの問題を心配している場合でも、配列のようにメモリを連続して保存してアクセスすることで、ソフトウェアをよりキャッシュに適したものにする必要があると言います。

1

状況によってはページサイズ(x86プラットフォームでBTWを4K以下に下げることはできません)はおそらく無関係です。ヒープにデータを割り当てると、ページサイズの問題は、あなたが想定している方法では発生しません。

関連する問題