質問: node.jsを使い開発を行っており, 動作テストでselenuimを動かしたところseleniumかテストサイトのバグで大量のメモリを消費し, およそ22時間PCが動かない状況となっております. メモリ使用過多によるPCの操作不能はどのように解決出来ますか. 可能であれば再起動等, 既存の未保存のデータを消去せずに問題を解決したいです. OSはwindows7, メモリは8ギガバイトとなっております. 今回はwindowsですが, 他osでも使用可能な解決策があれば, 後学のために回答頂ければ幸いです. また, このようなメモリ過多による動作不能を回避するソフトウェア開発上の手法やツールがありましたら, 同様の問題の回避に努めたいため, 回答頂きたいです. 以上, 夜遅くに失礼いたしました. ご回答よろしくお願いいたします.
回答: > > メモリ使用過多によるPCの操作不能はどのように解決出来ますか. > > > タスクマネージャーで、CPU 消費の多いプロセスの優先度を下げます。 !タスクマネージャーの例 この「詳細」タブから CPU を消費しているプロセスを右クリックして 優先度を「低」に設定します。 !優先度 うまくいくと、システム全体をフリーズ状態にしていたプロセスの優先度が下がって 作業がやりやすくなります。 全てのプロセスで優先度を変更できるわけではありませんし、 速度低下の原因が メモリ不足による 仮想メモリのスワップが原因の場合は それほど効果はありません。 CPU の消費 や ディスクアクセスを見て判断します。 > > 既存の未保存のデータを消去せずに問題を解決したいです. > > > アプリがどのように内部メモリーを保持しているのかわからないため難しいと思います。 アプリ側で定期的にデータを保存するような作りでないと難しいでしょう。 タスクマネージャから プロセスを選択して、「ダンプファイルの作成」で 実行中のアプリのメモリの状態を取得できます。 Visual Studio で 取得した ダンプファイルを開くと、プロセスが実行していた場所等がわかります。 しかし、ここから 未保存のデータを取り出すことはむつかしいと思います。 バイナリエディタで コアダンプを確認して 使えそうな文字列が 少し見つかる程度だと思います。 私は node.js には詳しくないのですが、調べてみると 実行中のプロセスにアタッチして 変数の値を見るようなことが可能なようです。 では や > > メモリ過多による動作不能を回避するソフトウェア開発上の手法やツール > > > まずは、アプリ側の問題を調査する必要があるでしょう。 node.js にデバッグ接続して原因調査をする手法か Visual Studio で 実行中のプロセスにアタッチして デバッグする手法を試してみてください。 ソースコードが無いと原因の特定まではむつかしいかもしれませんが・・。 SysInternals にも ハングアップした時に自動的にダンプを取得するツールとかあります。 アプリ起動前に 設定が必要なので 今回は使えませんが、参考まで・・。