ガベージコレクションを行うには、サブジェクトを完了する必要がありますか?

ショーン・ウォルシュ

Angularコンポーネントのクリーンアップパターンは次のようになります。

class SomeComponent implements OnInit, OnDestroy {
    private destroy$ = new Subject();

    ngOnInit() {
        service.someStream().takeUntil(this.destroy$).subscribe(doSomething);
    }

    ngOnDestroy() {
        this.destroy$.next(true);
    }
}

これには、コンポーネントが破棄されたときに自動的にサブスクライブを解除するという利点があります。

私の質問は次のとおりです。destroy$私が電話をかけなかったために無期限this.destroy$.complete()に存続する参照はありますか、それとも親クラスが収集されたときにGCされますか?

カータント

のソースを見るとSubject.complete、答えが見つかります。

complete() {
  if (this.closed) {
    throw new ObjectUnsubscribedError();
  }
  this.isStopped = true;
  const { observers } = this;
  const len = observers.length;
  const copy = observers.slice();
  for (let i = 0; i < len; i++) {
    copy[i].complete();
  }
  this.observers.length = 0;
}

呼び出しはcompleteすべてのオブザーバーに通知してから、オブザーバーの配列をクリアします。への参照を持つオブザーバー/サブスクライバーがいない限りSubjectガベージコレクションcompleteが可能かどうかに影響を与える実装には何もありませんSubject

RxJSはサブスクライバーに通知をプッシュします。サブスクライバーは、オブザーバブルへの参照を保持しません。それは逆です。したがって、Subjectクロージャまたはその他のメカニズムを介して、への参照を保持するサブスクライバを明示的に作成していない限りcomplete、ガベージコレクションの目的で呼び出す必要はありません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaでオブジェクトをnullに割り当てると、ガベージコレクションに影響がありますか?

分類Dev

zip.NewReader(bytes.NewReader()、len)を閉じるか、ガベージコレクションを自動的に行う必要がありますか?

分類Dev

それを再利用することができます前に、どのようにファイナライズ可能オブジェクトは、少なくとも2つのガベージコレクションサイクルを取りますか?

分類Dev

紺碧の機能でガベージコレクションを処理する必要がありますか?

分類Dev

ガベージコレクションのためにオブジェクトを作成しないようにすることは、それでも意味がありますか?

分類Dev

Javaでは、オブジェクトがガベージコレクションのルートからまだ到達可能かどうかを調べる方法はありますか?

分類Dev

RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

分類Dev

オブジェクトはいつガベージコレクションの対象になりますか?

分類Dev

オブジェクトはいつガベージコレクションの対象になりますか?

分類Dev

ガベージコレクション-マーク+スイープはモノリシック/アトミックである必要がありますか

分類Dev

スコープ変数とWeakReferencesは妙に対話する - いくつかのオブジェクトがガベージコレクションを得ることはありません

分類Dev

スコープ外のオブジェクトのオブジェクトプロパティを参照する場合、外部オブジェクトはガベージコレクションの対象になりますか?

分類Dev

スコープ外のオブジェクトのオブジェクトプロパティを参照する場合、外部オブジェクトはガベージコレクションの対象になりますか?

分類Dev

.netガベージコレクターがオブジェクトを次世代に移動するのに必要なコレクションの数

分類Dev

オブジェクトをガベージコレクションできるようにする

分類Dev

ガベージコレクションするために、マップをnilに設定する必要がありますか?

分類Dev

オブジェクトで実行中のスレッドは、Javaでガベージコレクションされるのを防ぎますか?

分類Dev

kotlinの「オブジェクト」はガベージコレクションを取得しますか

分類Dev

デリゲートは、オブジェクトがガベージコレクションされるのを防ぐことができますか?

分類Dev

ガベージコレクションされたオブジェクトの統計を取得するにはどうすればよいですか?

分類Dev

どのようにガベージコレクションは孤立したオブジェクトを識別するのでしょうか?

分類Dev

平均的なRailsプロジェクトにはどの継続的インテグレーションサービスを選択する必要がありますか?

分類Dev

実際のオブジェクトがガベージコレクションされている場合、WeakHashMapのエントリの値はどのようにしてガベージコレクションされますか?

分類Dev

オブジェクトをオブジェクト内からガベージコレクションの対象にする方法は?

分類Dev

サーブレットはいくつのアクションを実行する必要がありますか?

分類Dev

ToUpper()などを呼び出した後、古い文字列オブジェクトはガベージコレクションになりますか?

分類Dev

オブジェクトがガベージコレクションされないようにするにはどうすればよいですか?

分類Dev

Node.jsで大きなオブジェクトをクリーンアップすることを心配する必要がありますか、それともガベージコレクターに任せるべきですか?

分類Dev

オブジェクトがGroovyのコレクションにあるかどうかを確認します

Related 関連記事

  1. 1

    Javaでオブジェクトをnullに割り当てると、ガベージコレクションに影響がありますか?

  2. 2

    zip.NewReader(bytes.NewReader()、len)を閉じるか、ガベージコレクションを自動的に行う必要がありますか?

  3. 3

    それを再利用することができます前に、どのようにファイナライズ可能オブジェクトは、少なくとも2つのガベージコレクションサイクルを取りますか?

  4. 4

    紺碧の機能でガベージコレクションを処理する必要がありますか?

  5. 5

    ガベージコレクションのためにオブジェクトを作成しないようにすることは、それでも意味がありますか?

  6. 6

    Javaでは、オブジェクトがガベージコレクションのルートからまだ到達可能かどうかを調べる方法はありますか?

  7. 7

    RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

  8. 8

    オブジェクトはいつガベージコレクションの対象になりますか?

  9. 9

    オブジェクトはいつガベージコレクションの対象になりますか?

  10. 10

    ガベージコレクション-マーク+スイープはモノリシック/アトミックである必要がありますか

  11. 11

    スコープ変数とWeakReferencesは妙に対話する - いくつかのオブジェクトがガベージコレクションを得ることはありません

  12. 12

    スコープ外のオブジェクトのオブジェクトプロパティを参照する場合、外部オブジェクトはガベージコレクションの対象になりますか?

  13. 13

    スコープ外のオブジェクトのオブジェクトプロパティを参照する場合、外部オブジェクトはガベージコレクションの対象になりますか?

  14. 14

    .netガベージコレクターがオブジェクトを次世代に移動するのに必要なコレクションの数

  15. 15

    オブジェクトをガベージコレクションできるようにする

  16. 16

    ガベージコレクションするために、マップをnilに設定する必要がありますか?

  17. 17

    オブジェクトで実行中のスレッドは、Javaでガベージコレクションされるのを防ぎますか?

  18. 18

    kotlinの「オブジェクト」はガベージコレクションを取得しますか

  19. 19

    デリゲートは、オブジェクトがガベージコレクションされるのを防ぐことができますか?

  20. 20

    ガベージコレクションされたオブジェクトの統計を取得するにはどうすればよいですか?

  21. 21

    どのようにガベージコレクションは孤立したオブジェクトを識別するのでしょうか?

  22. 22

    平均的なRailsプロジェクトにはどの継続的インテグレーションサービスを選択する必要がありますか?

  23. 23

    実際のオブジェクトがガベージコレクションされている場合、WeakHashMapのエントリの値はどのようにしてガベージコレクションされますか?

  24. 24

    オブジェクトをオブジェクト内からガベージコレクションの対象にする方法は?

  25. 25

    サーブレットはいくつのアクションを実行する必要がありますか?

  26. 26

    ToUpper()などを呼び出した後、古い文字列オブジェクトはガベージコレクションになりますか?

  27. 27

    オブジェクトがガベージコレクションされないようにするにはどうすればよいですか?

  28. 28

    Node.jsで大きなオブジェクトをクリーンアップすることを心配する必要がありますか、それともガベージコレクターに任せるべきですか?

  29. 29

    オブジェクトがGroovyのコレクションにあるかどうかを確認します

ホットタグ

アーカイブ