2017-08-23 10 views
1

Fluxを作成したとしましょう。このFluxは作成中にいくつかのリソースにアクセスできるようになっており、Cancel/Complete(たとえば、いくつかの外部リソースを解放する)でクリーンアップをしたいと思います。最終的には、このFluxへのポインタをすべて削除するので、ガベージコレクションに使用できるようになります。ガベージコレクションではどうなりますか? FluxはCancelシグナルを受信して​​クリーンアップを実行できますか?Fluxesはどのようにガベージコレクションされていますか?

+0

クリーンアップを行うにはGCに頼らない方が良いでしょう。GCが使用可能なメモリがある限り、無期限に収集を延期することが許可されているため、オブジェクトが常に収集されるという保証はありません。 –

答えて

1
  • GCに縛らは特にクリーンアップメカニックは、資源供給とクリーンアップコールバックを取るFlux.usingと呼ばれる工場のオペレータがあり
  • 注意(ときGCed Flux、キャンセル信号を受信しません)がありません。そうしないと、あなたは両方のケースでクリーンアップ操作
  • を実行するためにdoFinallyを使用することができ、これはFluxは無限ではないと仮定している(例えば。Flux.createcompleteerrorを呼び出すことはありませんという)、またはキャンセルされます。
  • Fluxは通常、購読に初期化されなければならないので、何がそれに加入していない場合、リソースは、おそらく初期化されていない(彼らはFlux.createコールバックで初期化されて、再び、そうでない場合は、あなたの走行距離は変更になる場合があります)
+0

「Flux」がファイナライズ段階で何かを受け取ったとしても、それは資源管理のために依然として頼りにしています。 –

関連する問題