3

私のアプリケーション(私の仕事中)では、通信を処理するためにソケット接続プールを維持しています。プールからアクティブな接続を取得し、それを使用して閉じる多数のスレッド (数は多い) があります。しかし問題は、使用されていない参照を収集するためにガベージ コレクターが呼び出されることです。

今、ガベージコレクターが呼び出された後、私はしたい:

  1. 通信に参加するすべてのスレッドを一時停止します (私のスレッドは GC と一緒に実行されることに注意してください -> つまり、スケジューリングにより可能になります)
  2. スレッドからソケット接続を解放します (つまり、ソケット接続への参照)。そのステータスは、その中間のどこかにある可能性があります。または、それが実際に実現不可能な場合は、次のようにします。
  3. リソースを使用しているすべてのスレッドが終了した後、GC の呼び出しを遅らせる方法。さらにこの場合、関連するスレッドがジョブを終了したかどうかを判断する必要がある場合があります。
4

1 に答える 1

2

GCの実行時期を気にする場合は、アプリケーションの設計が壊れています。

デザインを修正します。


注:ガベージコレクターの動作方法に関する仕様はありますが、JVM実装にガベージコレクターが含まれている必要はありません。

于 2012-05-21T00:13:36.407 に答える