状況は少し複雑です。 私は、RMIを使って別のマシンの別のアプリケーションを制御するWebコンテナを持っています。 RMIサーバー側には、Webアプリケーション側が制御する必要があるユーザー情報を含むHashMapがあります。Javaオブジェクトが確実に破壊されるようにする
ユーザーがWebアプリケーション側からログアウトすると、RMIサーバーへのRMI呼び出しがあり、ユーザーにログアウトするようにサーバーに指示します。次に、HashMap内の項目を削除します。
これで、HashMapで削除したオブジェクトがGCによって収集されないことがわかりました。これは、他のスレッドがまだそれを使用していて、オブジェクトにユーザーの連絡先などのサブオブジェクトも含まれているからです。
オブジェクトのプロパティとプロパティのプロパティを含むオブジェクト全体をどのように破壊するのか、実際にはわかりません。
すべてのハードリファレンスを削除するのは簡単ではありません。他のスレッドは、ユーザーのペイロードの一部を処理するためにmutilスレッドを使用し、別のペイロードが異なるスレッドを使用することを意味します。 – Shisoft
さて、ログアウトしたばかりのユーザーのデータを処理するスレッドを停止することができます。あなたのスレッドを制御不能にすることは良い考えではありません。あなたはそれらをすべてユーザ側で追跡していますか? –
いつも...私は何をすべきかを知っています、ありがとうございます。しかし、オブジェクトのハードリファレンスを得る方法はありますか? – Shisoft