人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaプログラムが理由なく停止するという現象が発生しています。原因と対策を..

WindowsXP Professional SP2
JDK 1.5.0
プログラムは、自作のものが数種類。

プログラム自体は、100%バグなしとは言いませんが、それぞれかなり実績があるものです。
それぞれメッセージを頻繁に表示しますが、突然メッセージが止まります。ディスクIOも止まります。例外などJavaVMからのメッセージは一切ありません。メモリは十分にあります。CPUも余裕です。
要は、突然プログラムが停止するようなのです。
そしてたぶん複数のJavaプログラムを動かしている場合に、この現象は発生します。停止する場合は、すべてのJavaプログラムが停止します。
またこの現象は、プログラムを動かし始めてすぐには発生しません。数時間は経過した後です。発生する時間はまちまちです。
また停止しないで、最後までいくこともあります。←こちらの方が多い。
ちょっとわけが分からない現象ですが、よろしくお願いいたします。










●質問者: gzmgzm
●カテゴリ:コンピュータ インターネット
✍キーワード:CPU Java JDK WindowsXP Professional けが
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● yusukey
●40ポイント

停止、とはプロセスがなくなってしまうことではなく、フリーズのこと指しているでしょうか?

フリーズ時にはスレッドダンプの確認が有効です。

スレッドダンプをとると、その瞬間、VM 内の各スレッドが何をしているのかがわかります。

フリーズしているタイミングでスレッドダンプを数回取得して、動きのないスレッドがフリーズしている可能性が高いです。

それらのスレッドで何をしているのか(していないのか)確認してみましょう。

・Java - スレッドダンプの取り方

http://yusuke.homeip.net/diary/2006/09/21/1158846052527.html

◎質問者からの返答

ahirusanもyusukeyさんもご回答ありがとうございます。

スレッドについてですが、VMで内部的に作成しているスレッドは別にして、自分でスレッドを生成しているプログラムもありますし、一つしかスレッドがないものもあります。

複数スレッドの場合、sleepを使っています。ちょっと気になるところです。yieldは使っていません。

スレッドダンプとのことですが、いつ発生するのかわからないので、困ったところです。発生したら見てみようと思います。

マシンのメモリも十分あり、またmx1024Mで起動しているので、メモリ関連の要素はないかなと思います。

また複数プログラム同時に発生するようなので、VM相互間の問題のように思います。やっぱりディスクアクセス?

ところで、スレッドはOSのスレッドをつかっているのでしょうか、それともVMで作成したスレッドを使っているのでしょうか。←これは質問ではありません..


2 ● あひる
●40ポイント

可能性としては1.メモリリーク、2.デッドロック、との2つが考えられるのですが、JavaVMがメッセージを発しないということは1ではありませんので、2のスレッド間でのデッドロックが濃厚です。デッドロックは起こる頻度も気まぐれですから。提示されている条件が少なすぎるので、推測できるのはこの辺までです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ