アプリケーション終了時の大量のページインをちょっと実験してみました. std::vector<T> の場合 #define ZEROCLEAR_IN_DESTRUCTOR struct DummyData { public: int m_data; DummyData() : m_data(rand()) { } #ifdef ZEROCLEAR_IN_DESTRUCTOR ~DummyData() { m_data = 0; } #endif }; class CMyWindow : public CWindowImpl<CMyWindow> { public: std::vector<DummyData> m_data; CMyWindow() { // 64 MB ほど確保 m_data.resize( 1024 * 1024 * 16 ); } ...... こんな感じで 64 M
多くの人々は,Windows OS でのスワップアウトを「メモリが足りなくなったときの緊急回避」と考えているようです.実際,緊急退避的なスワップアウトも存在しますが,PC の搭載メモリが増えてきた現在では,しかし,もっと別の形でのスワップアウトの方が頻繁に起きるようになってきています.ここでは,より現実的なスワップアウトの姿を見てみることにしましょう. ある想像上のプログラムを考えます.そのプログラムは,300 MB のヒープを確保し,同時に 300 MB 程度のファイルのあちこちにランダムアクセスを繰り返すとします. Windows は,このアプリケーションを円滑に動作させるために,どのように物理メモリを提供するのでしょうか? アプリケーションが,ヒープに対するランダムアクセスのみを行い,ファイルアクセスはほとんど行わない場合 この場合,300 MB の物理メモリをヒープのために維持し続
Linux(x86)で使えるメモリサイズ x86 (386, 486, Pentium ...) の Linux では,最新のカーネルを使えば 64GB まで使える,などと聞かれたことがあるかも知れませんが,これはシステム全体として使えるメモリサイズで,1 プロセスではこんなに使えません。まず,32bit のアーキテクチャということで 4GB (2^32B) の壁があるのですが,実は更に制限があります。 簡単にまとめますと, 1回の malloc のサイズが 128kB 以下のものの合計: 約 1GB まで 1回の malloc のサイズが 128kB 以上のものの合計: 約 2GB まで となっています。要するに,大きなサイズで malloc してると 2GB まで, 細かく malloc してると 1GB までしかつかえない,ということです。 それぞれアドレス空間の別の部
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く