オブジェクトへの Null の割り当ては Java ガベージ コレクションを強化しますか?
未使用のオブジェクトへの参照を null として割り当てることは、潜在的な手段として議論されていますJVM のガベージ コレクション (GC) パフォーマンスを向上させます。ただし、ほとんどの場合、目立ったメリットは得られないというのがコンセンサスです。
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 を割り当てます。削除された要素に対して GC を開始してメモリを再利用しますが、参照を自然にスコープ外にする場合と比べて、それほど早く発生するわけではありません。したがって、次のコード スニペットはどちらも機能的に同等です。
void foo() { Object o = new Object(); /// do stuff with o }
void foo() { Object o = new Object(); /// do stuff with o o = null; }
参照を null に明示的に設定すると安心感は得られますが、GC プロセスに目に見える改善はもたらされません。アレイの管理など、特定のシナリオでのみ有益です。
以上がオブジェクトを Null に設定すると、実際に Java ガベージ コレクションが向上しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。