Этот код поддерживает четыре экземпляра BigClass
живыми, как показано в дампе памяти в Chrome. interval
Observable
остается активным и поддерживает обратные вызовы, которые имеют ссылки на экземпляры BigClass
.
class BigClass {
constructor(observable) {
this.bigArray = new Array(9999999).fill(0);
observable.subscribe(x => this.result = x);
}
//...
}
let observable = new rxjs.interval(1000);
let bigObject = new BigClass(observable);
let bigObject1 = new BigClass(observable);
let bigObject2 = new BigClass(observable);
let bigObject3 = new BigClass(observable);
bigObject = null;
bigObject1 = null;
bigObject2 = null;
bigObject3 = null;
observable = null;
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
Как мне освободить память в этом случае, когда у меня больше нет ссылок ни на подписки, ни на источник Observable
?