Bidang contoh, elemen larik
Jika ada referensi ke suatu objek, maka tidak bisa sampah dikumpulkan. Apalagi jika objek itu (dan seluruh grafik di belakangnya) besar, hanya ada satu referensi yang menghentikan pengumpulan sampah, dan referensi itu tidak terlalu dibutuhkan lagi, itu adalah situasi yang sangat disayangkan.
Kasus patologis adalah objek yang mempertahankan instance unnessary ke seluruh pohon DOM XML yang digunakan untuk mengkonfigurasinya, MBean yang tidak dicabut, atau referensi tunggal ke objek dari aplikasi web yang tidak diterapkan yang mencegah seluruh classloader dibongkar .
Jadi, kecuali Anda yakin bahwa objek yang menyimpan referensi itu sendiri akan tetap menjadi sampah yang dikumpulkan (atau bahkan kemudian), Anda harus membatalkan semua yang tidak lagi Anda perlukan.
Variabel yang dicakup:
Jika Anda mempertimbangkan untuk menyetel variabel lokal ke null sebelum akhir cakupannya, sehingga dapat diklaim kembali oleh pengumpul sampah dan menandainya sebagai "tidak dapat digunakan mulai sekarang", Anda harus mempertimbangkan untuk meletakkannya dalam ruang lingkup yang lebih terbatas sebagai gantinya .
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; // <-- explicitly set to null
doSomethingElse();
}
menjadi
{
{
BigObject obj = ...
doSomethingWith(obj);
} // <-- obj goes out of scope
doSomethingElse();
}
Cakupan yang panjang dan datar biasanya buruk untuk keterbacaan kode juga. Memperkenalkan metode pribadi untuk memecah masalah hanya untuk tujuan itu bukanlah hal yang tidak biasa juga.