Rumah > Java > javaTutorial > teks badan

Adakah Menetapkan Objek kepada Null Sebenarnya Meningkatkan Pengumpulan Sampah Java?

Mary-Kate Olsen
Lepaskan: 2024-11-21 10:32:10
asal
438 orang telah melayarinya

Does Setting Objects to Null Actually Improve Java Garbage Collection?

Adakah Menugaskan Null pada Objek Meningkatkan Pengumpulan Sampah Java?

Menetapkan rujukan kepada objek yang tidak digunakan sebagai null telah dibahaskan sebagai cara yang berpotensi untuk meningkatkan prestasi kutipan sampah (GC) JVM. Walau bagaimanapun, konsensus adalah bahawa dalam kebanyakan kes, ia tidak menghasilkan apa-apa faedah yang ketara.

Java GC dengan cekap memantau objek yang tidak boleh dicapai dan dengan segera menuntut semula ingatan mereka. Menugaskan null secara eksplisit kepada objek tidak akan mempercepatkan proses ini melainkan ia kekal dirujuk secara eksplisit di tempat lain. Sebagai contoh, dalam kes tatasusunan, membatalkan elemen individu apabila ia menjadi tidak diperlukan boleh membantu mengoptimumkan peruntukan memori.

Pelaksanaan ArrayList menggambarkan perkara ini:

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;
}
Salin selepas log masuk

Dalam senario ini, secara eksplisit menetapkan null kepada elemen yang dialih keluar memulakan GC untuk menuntut semula memori, tetapi ia tidak akan berlaku dengan ketara lebih awal berbanding dengan membiarkan rujukan secara semula jadi di luar skop. Oleh itu, kedua-dua coretan kod berikut adalah setara dari segi fungsi:

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

Walaupun secara eksplisit menetapkan rujukan kepada null boleh memberikan ketenangan fikiran, ia tidak menawarkan sebarang peningkatan yang boleh diukur kepada proses GC. Hanya dalam senario tertentu, seperti mengurus tatasusunan, ia boleh memberi manfaat.

Atas ialah kandungan terperinci Adakah Menetapkan Objek kepada Null Sebenarnya Meningkatkan Pengumpulan Sampah Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan