- PR -

デッドロックについて

1
投稿者投稿内容
くれよん
ベテラン
会議室デビュー日: 2005/04/28
投稿数: 74
投稿日時: 2006-01-23 09:50
こんにちわ。いつも勉強させていただいています。

javaでファイル操作をした後、そのファイルが入っているフォルダをwindowsから削除しようとすると、デッドロックの様な状態になります。「フォルダが他のプログラムで使用中です」のようなポンプアップウィンドウが表示されます。

この現象(デットロック)が起る時と起らない時があります。
PCをrebootすると、そのフォルダを消せるようになります。
操作したファイル自体は、削除できます。

実行環境はeclipseです。プログラム実行後に、コンソールからプログラム強制終了させる事がよくあります。これが原因でしょうか。


ご教授宜しくお願いします。


[ メッセージ編集済み 編集者: ジュン 編集日時 2006-01-23 11:23 ]
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2006-01-24 03:46
ソースコードがないのでなんともいえませんがファイル操作の処理でstreamのcloseし忘れとかありませんか?
Javaプロセスが対象ディレクトリ(またはファイル)をつかみっぱなしになっているのが原因だと思いますが。

ちなみ、一般的にJavaでは「デッドロック」はまったく違う意味で使われますので気をつけましょう。
タイトルだけ見るとThreadの話と思う人が大半だと思います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-01-24 04:56
Windows は強烈に厳しいファイルロックでうれしかったり悲しかったりしますね。
どのプロセスがどのファイルを握っているかどうかは Process Explorer で確認できます。
http://www.sysinternals.com/Utilities/ProcessExplorer.html

タスクマネージャの親分みたいなので無償で利用できます。

スレッドのデッドロックの話であればスレッドダンプを解析しましょう。
・BEA トラブルシューティング ガイド
> サポート診断パターン > サーバ ハング - アプリケーションのデッドロック
http://www.beasys.co.jp/cs/support_news/product_troubleshooting/ServerHang_Application_Deadlock_Pattern.html
・侍
http://yusuke.homeip.net/samurai/

[ メッセージ編集済み 編集者: インギ 編集日時 2006-01-24 04:59 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-01-24 10:00
カレントディレクトリになっているフォルダも削除できません。
くれよん
ベテラン
会議室デビュー日: 2005/04/28
投稿数: 74
投稿日時: 2006-01-24 13:53
みなさん返答ありがとうございます。

デッドロックは、JavaでThreadの意味で使われるというのは初めて知りました。勉強になりました。ありがとうございます。

Process Explorer を使用して確認してみようと思います。

1

スキルアップ/キャリアアップ(JOB@IT)