プロが教えるわが家の防犯対策術!

Windows XP Embeddedを使用しています。仮想メモリは無しとしています。アプリケーション
を動作させると、異常なメモリリーク(初期は10MBから90MBまで増加)が発生し、動作も
不安定になりました。いまのところ原因の特定に至っていません。
タスクマネージャで見るとアプリケーションにページフォールトが発生しています。
これは正常なのでしょうか? 正常とすれば、スワップファイルを持たないのにページフォールトが処理されているのでしょうか?

A 回答 (2件)

ページフォルトは論理ページに対して物理ページが無い場合に発生します。


物理メモリ割り当てはページ単位なので、複数のページ割り当てが必要なサイズのメモリ要求でも、
実際の物理ページ割り当ては、物理ページが未割り当ての論理ページへのアクセス時に行われます。
ので、スワップ無しでもページフォルトは発生します。

この回答への補足

すみません。もう少し教えてください。ページフォールトが発生しますと。該当のページをメモリに読み込むことになると思いますが、どのようにこれを解決するのでしょうか?

補足日時:2010/11/29 16:14
    • good
    • 3
この回答へのお礼

ありがとうございました。

お礼日時:2010/11/29 16:06

> これは正常なのでしょうか?



それだけで異常とは言えません。


> 正常とすれば、スワップファイルを持たないのにページフォールトが処理されているのでしょうか?

デマンドページングなシステムではメモリ割り当ての手法としてページフォルトを使っています。

ソフトはメモリをページ単位で大雑把に割り当て、割り当てられたメモリを使い切ってメモリの割り当てられてない部分にアクセスすると例外を検出(ページフォルト発生)し、メモリを割り当てます。

ですから、正常な動作にもページフォルトの発生はあります。

※ だからといって、全てが正常とはいえません。メモリリークの起こるソフトはメモリを食い潰すと不安定化するので使わない、どうしても使う必要がある場合には定期的にそのソフトを再起動するなどの対処が必要です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!