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

ジェームズ・マクマホン:

未使用のオブジェクト参照をnullJavaに割り当てると、ガベージコレクションプロセスが測定可能な方法で改善れますか?

私のJava(およびC#)の経験から、仮想マシンやJITコンパイラーを試してみると直感に反することが多いことがわかりましたが、同僚がこの方法を使用するのを見てきました。アップまたはそれらのブードゥー教プログラミング迷信の1つ?

Mark Renouf:

通常はありません。

しかし、すべてのもののように:それは異なります。最近のJavaのGCは非常に優れており、到達できなくなった直後にすべてをクリーンアップする必要があります。これは、ローカル変数のメソッドを終了した直後で、クラスインスタンスがフィールドで参照されなくなったときです。

明示的にnullにする必要があるのは、他の方法で参照されたままになることがわかっている場合のみです。たとえば、保持されている配列。配列の個々の要素が不要になった場合は、それらをnullにすることができます。

たとえば、ArrayListの次のコード:

public E remove(int index) {
    RangeCheck(index);

    modCount++;
    E oldValue = (E) elementData[index];

    int numMoved = size - index - 1;
    if (numMoved > 0)
         System.arraycopy(elementData, index+1, elementData, index,
             numMoved);
    elementData[--size] = null; // Let gc do its work

    return oldValue;
}

また、オブジェクトを明示的にnullにしても、参照が残っていない限り、オブジェクトがスコープ外になった場合よりも早くオブジェクトが収集されることはありません。

両方とも:

void foo() {
   Object o = new Object();
   /// do stuff with o
}

そして:

void foo() {
   Object o = new Object();
   /// do stuff with o
   o = null;
}

機能的に同等です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ガベージコレクションされた言語は、オブジェクトをスタックにインラインで割り当てることができますか?

分類Dev

オブジェクトのコレクションを反復処理するときにng-controllerを動的に割り当てる方法はありますか?

分類Dev

Javaはオブジェクトの割り当て解除とガベージコレクションの後もシステムメモリを使用します

分類Dev

ガベージコレクションの影響を軽減する価値はありますか?

分類Dev

スレッド間でオブジェクトを共有すると、パフォーマンスにどのような影響がありますか?

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

three.jsでオブジェクトのスケールを縮小すると、パフォーマンスに悪影響がありますか?

分類Dev

オブジェクトをコレクションに挿入するときに_idがありません

分類Dev

Java:オブジェクトのコレクションがあるときに平均を取得する簡単な方法はありますか?

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

デバッグせずにOracle10gオブジェクトをコンパイルするとどのような影響がありますか?

分類Dev

ガベージコレクションに適格なオブジェクトはいくつありますか?

分類Dev

Java-どのオブジェクトがガベージコレクションされていますか?

分類Dev

Javaのガベージコレクション-すべてのオブジェクトをnullにすることは、明示的に適切なスタイルと見なされますか?

分類Dev

連続して複数のオブジェクトを呼び出すことによるパフォーマンスへの影響はありますか?

分類Dev

オブジェクトのプロパティはC#のオブジェクトでガベージコレクションされますか、それとも個別のgcメカニズムがありますか

分類Dev

ガベージコレクションに対するページングの影響は何ですか?

分類Dev

ガベージコレクションに使用できるオブジェクトはいくつですか?

分類Dev

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

分類Dev

1.5以降でのGolangガベージコレクターの改善は、割り当て解除されるメモリの量に影響しますか?

分類Dev

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

Related 関連記事

  1. 1

    ガベージコレクションされた言語は、オブジェクトをスタックにインラインで割り当てることができますか?

  2. 2

    オブジェクトのコレクションを反復処理するときにng-controllerを動的に割り当てる方法はありますか?

  3. 3

    Javaはオブジェクトの割り当て解除とガベージコレクションの後もシステムメモリを使用します

  4. 4

    ガベージコレクションの影響を軽減する価値はありますか?

  5. 5

    スレッド間でオブジェクトを共有すると、パフォーマンスにどのような影響がありますか?

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    three.jsでオブジェクトのスケールを縮小すると、パフォーマンスに悪影響がありますか?

  13. 13

    オブジェクトをコレクションに挿入するときに_idがありません

  14. 14

    Java:オブジェクトのコレクションがあるときに平均を取得する簡単な方法はありますか?

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

    デバッグせずにOracle10gオブジェクトをコンパイルするとどのような影響がありますか?

  20. 20

    ガベージコレクションに適格なオブジェクトはいくつありますか?

  21. 21

    Java-どのオブジェクトがガベージコレクションされていますか?

  22. 22

    Javaのガベージコレクション-すべてのオブジェクトをnullにすることは、明示的に適切なスタイルと見なされますか?

  23. 23

    連続して複数のオブジェクトを呼び出すことによるパフォーマンスへの影響はありますか?

  24. 24

    オブジェクトのプロパティはC#のオブジェクトでガベージコレクションされますか、それとも個別のgcメカニズムがありますか

  25. 25

    ガベージコレクションに対するページングの影響は何ですか?

  26. 26

    ガベージコレクションに使用できるオブジェクトはいくつですか?

  27. 27

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

  28. 28

    1.5以降でのGolangガベージコレクターの改善は、割り当て解除されるメモリの量に影響しますか?

  29. 29

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

ホットタグ

アーカイブ