私は現在、自分のJavaアプリケーションで何が起こっているのかを理解しようとしています。Javaスレッドが累積し続ける
1 - (259-260スレッドで着実)アプリケーションを起動し
2 - いくつかの時間が(時にはそれが12時間、他の2分だ、未固定長)で行く
3 - 何かが起こります、エラーはスローされず、特定のスレッドは動作を停止しません。
4 - 新しいスレッドがスタックを開始し、0.7秒ごとに新しいスレッドを作成します。イベントから起動します。 (通常は処理され、1秒未満で自動的にクリーニングされます)この時点で、スレッド番号が上がっていることを簡単に確認でき、決して停止しません。 (最後のログは手動でシャットダウンする前に1170スレッドに達しました)。
5 - スレッドがスタックアップを開始する時点から、アプリケーションの半分が動作を停止し、新しいスレッドはまだ起動されますが、まったく処理されません。
ガベージコレクタが停止/中断する原因を知りたいのですが、メインスレッドがロックされている可能性がありますか?おそらくJVMエラーですか?このプロセス全体の間、GCは決して直接触れることはありません。それが起こるまで、GCは想定されたとおりに動作し続けます。
私に尋ねると、「もの」とは何か、私は実際にはわからないが、新しいスレッドが完全に解析されないという事実を除いて、デバッグはすべてうまく流れている。 (それはデバッグコードに到達しますが、それ以外は残ります)
ありがとうございます。
なぜこれはGCの問題ですか?これはなぜ "あなたはThreadPoolを使用するのではなく、たくさんのスレッドを作成しましたか"という問題ではないのですか? – Makoto
私はそれがGCの問題だと言っているわけではありません、私は原因を探す場所を知るために、GC停止を引き起こす原因を尋ねています。 – Fabricio20
ここで明白にしましょう。これらのスレッドを手動で作成していますか、実際にはスレッドプールを使用していますか? – Makoto