各Observable
には最初に発行された値までトレースできるキャッシュがあるので、このキャッシュを格納するために使用されるメモリの量は制限されていないようです。Observableには無限のメモリが必要ですか?
Observable.interval(1.microsecond).map(_ => System.currentTimeMillis)
.subscribe(x =>())
をアプリの実行中に実際にメモリ使用量が着実に全体の10分の期間中に上昇している。
は、私は次のコードでこの仮定をテストしてみました。
それはキャッシュなしの特別Observable
をインスタンスまたは多分それはいくつかのレベルでのキャッシュだキャップするためにそれを指示することができるかどう私の質問はありますか?
ある時点ですべてがGCされないことは確実ですか? – Carcigenicate
@Carcigenicate 10分は、GCが仕事をするのに十分な間隔のようです。さらに、論理キャッシュは、すべての値を格納し、 'Observable'がアクティブである間に参照解除されていないのでGCしないでください。 – Anton
まだ、VisualVMを開いてGCを強制すると試してみる価値があります。 Observableがどのように機能するのかは分かりませんが、オブジェクトには永久に保持されるプログラムがいくつかあったことがわかりました。使用率が高くなると自動的にクリアされます。 – Carcigenicate