モニター上でロック待ちのスレッドを示すJVMスレッド・ダンプの原因は何ですか?モニターには対応するロック・スレッドがありません。 Windows 2003のJVMロック・スレッドのないモニターを含むスレッド・ダンプ
答えて
上
のJava 1.5_14ちょうど野生の推測だが、それはスレッドが二度ロックを取得しようとすることで自分自身をロックしていること、できることを?おそらく、あなたがいくつかのコードを投稿できるなら、それは役に立ちます。
はい通常、ロックされている各モニターには所有者スレッドが必要です。スタックダンプが完了していない(長すぎる)か、ダンピングが一貫していない可能性があります。私はそれが世界を止めていないと想像することができるので、ロックされたモニターはダンプされますが、ロックを所有しているスレッドはbeeing(これは単なる推測です)の前にロックを解除します。
検索を容易にするために、ダンプをテキストファイルとしてアップロードし、どのモニタを見ているか教えてください。
あなたのコードは変更によってJNIを使用しますか? (つまり、Javaから起動されたネイティブコードを実行していますか?)
JDK 1.6.0_05と同様の動作が見られました。アプリケーションがデッドロックしているように見えますが、Jstackは他のスレッドが保持していないロックを待っているスレッドを表示します。いくつかのJNIコードがあるので、何かを壊す可能性があります。
解決策が見つかりませんでした。問題は1台のマシンでのみ再現可能です。
いいえ、ありません。ありがとうございました。 – Kevin
待機中のスレッドは永久に待機するのか、それとも最終的に進むのでしょうか?
後者の場合、ガベージコレクタによってロックが保持されている可能性があります。
GCが実行されているときに通知されるjavaコマンドラインに引数-verbose:gc with -XX:+PrintGCDetails
を追加できます。 gcの活動があなたの減速と一致する場合、これが問題であることを示している可能性があります。
ここにあるのはinformation on garbage collectionです。
最終的には数分後に処理されます。ガベージコレクタによって保持されているかどうかを確認するにはどうすればよいですか。スレッドダンプにガベージコレクタスレッドがあるはずですか? – Kevin
私は今日も同様の問題を抱えていましたが、静的リソースへのアクセスも含まれていました。
短いバージョンは、AWT TreeLockによってブロックされたAWT-EventQueueスレッドの外側で、静的ブロック内でGUIが変更されたクラスであるため、EventQueueがブロックされたクラスへの参照を作成し、そのクラスのクラスローダのモニタを待つ。
ここで重要なのは、クラスローダーのロックがスレッドダンプにロックされていないことです。
完全な答えはon this threadです。
Java 1.6にアップグレードしようとしましたか?あなたが1.5のみであれば、バグが問題になる可能性があります。
- 1. Javaスレッドのダンプ: "ロックするのを待っていない..."
- 2. スレッドをロックして別のスレッドにロック
- 3. リアクティブエクステンション、ロック、スレッド
- 4. 複数のスレッドがJavaの同じモニターでロックを保持できますか?
- 5. Javaスレッドのダンプ:java.lang.Thread.State:WAITING(オブジェクトモニタ上)
- 6. JVMのスレッドの監視
- 7. JVM /アプリケーションサーバのスレッド制限
- 8. Python - スレッドを含む複数のjsonプロファイル?
- 9. スレッドを含むiOSドキュメントのサムネイル
- 10. スレッドは別のスレッドをロックしていますか?
- 11. Oracle例外でjvmスレッド・ダンプをトリガーする方法はありますか?
- 12. Androidスレッドとオブジェクトのロック
- 13. スレッド同期のユニットテスト(ロック)
- 14. あるスレッドでJavaのロックを解除し、別のスレッドでロック解除
- 15. coldfusionサーバーのモニターjvmのスナップショット
- 16. Javaスレッドのダンプ表示デッドロックの症状
- 17. 不正な変数を含むJavaスレッドのインスタンス化
- 18. あるスレッドから別のスレッドに転送できるロック
- 19. スレッドIDに基づいてスレッドをロックする方法はありますか?
- 20. モニターを保持するスレッドを見つける方法は?
- 21. 実行中のJVMとは異なるスレッドを作成する
- 22. はロック! - すべてのスレッドは= 0
- 23. スレッド、ロック、および条件の状態
- 24. ロック付きループ内でのスレッド実行
- 25. スレッドはカスタムスレッドのPythonでロックする
- 26. Java PipedInputStreamスレッドは、ロックを保持している他のスレッドがないBLOCKED状態ですか?
- 27. IOS SDK - NSLockメッセージ:「スレッドからロック解除もロックしていなかった」
- 28. 新しいスレッドのDispatcher.InvokeがUIをロックしています
- 29. アプリケーションバンドルにJVMのコピーを含む
- 30. C++/CLIスレッド同期(マネージコードとアンマネージコードを含む)
私たちに見えるダンプはありますか? – svrist
以下に添付しました – Kevin