• ベストアンサー

ページフォールト

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

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

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

variete
質問者

お礼

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

variete
質問者

補足

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

その他の回答 (1)

回答No.2

> これは正常なのでしょうか? それだけで異常とは言えません。 > 正常とすれば、スワップファイルを持たないのにページフォールトが処理されているのでしょうか? デマンドページングなシステムではメモリ割り当ての手法としてページフォルトを使っています。 ソフトはメモリをページ単位で大雑把に割り当て、割り当てられたメモリを使い切ってメモリの割り当てられてない部分にアクセスすると例外を検出(ページフォルト発生)し、メモリを割り当てます。 ですから、正常な動作にもページフォルトの発生はあります。 ※ だからといって、全てが正常とはいえません。メモリリークの起こるソフトはメモリを食い潰すと不安定化するので使わない、どうしても使う必要がある場合には定期的にそのソフトを再起動するなどの対処が必要です。

関連するQ&A

  • ページフォールトを発生させるメモリ管理ユニットとはCPUの中の部品なん

    ページフォールトを発生させるメモリ管理ユニットとはCPUの中の部品なんですか? ページフォールトについてwikipediaで見てみると、「ハードウェアが発生する割り込み」とあります。ハードウェア"から"発生するなら、ページフォールトは外部割込みだと思いました。しかし基本情報技術者の過去問によると違うようです。ページフォールトを発生させるメモリ管理ユニットとはもしかしてCPUの中の部品なんですか? ちなみにH18春問21です。

  • メモリページのファイルをふやす

    今日より頻繁に下のようなウォーニングが出てきます. 動作が遅く,作業がはかどりません. 「システムの仮想メモリが少なくなってきています. Windowsが正しく動作するために仮想メモリページファイルのサイズをふやしてください.」 どのようにしたらいいのでしょう. タスクマネージャでメモリの使用量を見ると,133メガです.当機はメモリを328メガ積んでいます.

  • 仮想メモリ増加

    WindowsでJavaWebStartのアプリケーションを起動しています。 10日程起動したままにしておくとタスクマネージャのjavaw.exeの仮想プロセスが増加し続けています。 起動時は200M程度で10日後は1Gを超えています。 メモリリークかと考え調べましたがヒープ領域も非ヒープ領域も増えていません。 メモリの断片化かと考え仮想メモリ増加後にメモリクリーナも試しましたが、メモリは減少しません。 microsoftのvadumpも使い調べましたが、問題あるように見えません。 やはり、プログラムの問題でしょうか?それかjavaのコンパイラの問題でしょうか? どなたかご教授願います。 調査の手段だけでもいいです。

  • 物理メモリとスワップ(仮想メモリ)について

    windows xp 搭載メモリ:512MB の環境です。 タスクマネージャでメモリ使用量を見ると、 物理メモリ 合計:514992(約512MB) 利用可能:251928KB PF使用量(物理メモリで利用されている量+スワップ?):340MB となっていまして この状態というのは 物理メモリで約260MB使っていて(合計-利用可能) スワップが約80MB(PF使用量-260MB) 発生しているということなのでしょうか? 利用可能な物理メモリが251928KBもあるのに、 残りの物理メモリを使わず、スワップが発生しているように 見えるのですが、物理メモリに、ある程度利用可能なメモリ領域が あっても必ず仮想メモリを利用するものなのですか? 自分としては、物理メモリの使用量がMAXになってから 搭載している物理メモリの最大値を超えて、溢れたからそらに 対応するために、仮想メモリが使われるような概念をもっていますが、 違いますでしょうか? 頭が混乱中ですw ご教授お願いいたします。

  • 仮想メモリについて

    システムのプロパティ→パフォーマンスオプションから仮想メモリを0にしたにもかかわらずタスクマネージャーを見てみるとページフォルトに数字が入っています。 1Gメモリを搭載しておりコミットチャージは400Mいかないぐらいなのでメモリで全て処理できるのではないかと思うのですが、これはメモリが足りなくなっている状態があると言う事なのでしょうか?

  • ページファイルが足りません…と出ますが

    メモリが2G、CPUもathlonx2-3800を搭載したPCなのですが、OSインストールしたばかりにもかかわらず、"ようこそ"画面からデスクトップにアイコンが表示されるまで5分以上かかります… "ページファイルが足りません"という警告が出たんで、原因はページファイルの不足にあるようなんですが、仮想メモリを8000MB(KBではないです)にまで上げないとまともに立ち上がらないのです。 タスクマネージャーではコミットチャージが 合計  230MB 制御値 10000MB 最大値 430MB となっています。 これって異常ではないでしょうか?

  • ページファイルが増加し、ネット中断されます

    「仮想メモリが小さ過ぎます」と出るようになり、メモリを512メガに1ギガを増設しました。 パソコンに認識されていて、動作も速くなりました。 しかしネットにつなぐと、どんどんページファイルを増加して、きりがありません。 最近はタスクマネージャーをひらいて、PF使用量が2~3ギガ位でネットを閉じるようにしました。 その間、ネットの操作はできていません。 なにか良い対処法はございませんか? ちなみにインターネットエクスプローラー8を使い、セキュリティーソフトはノートン360です。

  • ページファイルについて

    何もアプリケーションを使用していない時でもページファイルの使用量が600MB近くあるんですが、これは普通なんでしょうか?CPUの使用率は5%未満になっています。 普通、何もアプリケーションを起動してない場合は0に近いはずなんじゃないんですか?バックで色々動いてる可能性もありますが、600MBはすごい量だと思います。 このパソコンのCPUの速度は1.73GHzで、メモリ(RAM)は502MBです。ページファイルの使用可能最大値は649MBです。 また、タスクマネージャーでみたところ、 物理メモリ(KB) 合計 514096 利用可能 184512 システムキャッシュ 275932 ってなってました。

  • メモリのハードフォールト・仮想メモリについて

    PC環境: OS・・・Windows7 64bit CPU・・・i7-875K @3.5GHz VGA・・・GTX480 メモリ・・・8GB システムドライブにSSDを使用しています。 リソースモニターのメモリのタブからハードフォールトを確認すると、頻繁ではないですが結構な回数発生しているようです。 (当方の認識ではハードフォールトとは、「メモリ上にあるアクセス頻度が低い等の理由であまり必要がない内容を仮想メモリに移動させたり、それを再度読み込んだりすること」なのですが、これは正しいでしょうか?) 8GBメモリを積んでいてなかなかメモリ不足にはならないと思うので、仮想メモリを削除して全てメモリ上で処理させた方が、SSDへの書き込み回数も減るし、SSDがボトルネックになることもなくなると思うのでその方が良いのではないかと思ったのですが、これは間違っているでしょうか?

  • メモリリーク

    メモリリークに関する質問です。 現在稼動しているサーバーについてなのですが、メモリの使用量が実際に搭載しているメモリ量を超えてスワップが発生してしまっています。一日当り数MBのメモリが消費されてしまっているようなのですが、タスクマネージャー上ではそんなに増えているアプリケーションはありません。 プリンタドライバが悪さをしているとの話もあるのですが、調査の仕方がわからず困っています。 まずはこれがメモリリークなのかどうかがよくわからないのですが、調査方法等ご存知の方、知恵を貸してください。よろしくお願いいたします。 【ちなみに環境は】 ・Windows2000Server ・ORACLE9.0.1 ・プリンタ用のパッケージ ・VC++及びVBにて開発 【こんなシステムです】 ・一日に1400枚程度の紙を印字 ・RS232Cを使用して他のコンピュータと通信を  一日に1400回程度行っている  (1回あたり256バイト)