[解決済み] Javaでオブジェクトをnullに代入するとガベージコレクションに影響があるのか?
2023-05-05 02:50:22
質問
未使用のオブジェクト参照を
null
を割り当てることは、ガベージコレクション処理を改善することになるのでしょうか?
私の Java (および C#) の経験から、仮想マシンや JIT コンパイラーを出し抜こうとすることはしばしば直感に反しますが、同僚がこの方法を使うのを見て、これは良い習慣なのか、それともブードゥー教のプログラミング迷信の 1 つなのか、興味があります。
どのように解決するのですか?
一般的には、ありません。
しかし、すべてのもののように、それは依存します。最近の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;
}
機能的に同等である。
関連
-
Jsoup-Crawlingの動作
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] コレクションを反復処理し、ループ内でオブジェクトを削除する際に ConcurrentModificationException を回避する。
-
[解決済み] Javaコレクションをフィルタリングする方法(述語に基づく)?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
-
[解決済み】JavaScriptのガベージコレクションとは何ですか?
-
[解決済み] Java のガベージコレクションでは、円形参照はどのように扱われるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】javaでオブジェクトを削除する?
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
無効な文字定数
-
SocketException java.netの4つの例外解決策。
-
コンストラクタDate()が未定義である問題
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
アクセス制限の解決方法: ---- in Java
-
[解決済み] Javaオブジェクトをnullにすることはもう意味がないのでしょうか?