Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengumpul sampah tidak dapat mengumpulkan objek yang digunakan oleh aplikasi sementara kode aplikasi dapat mencapai objek tersebut. Aplikasi ini dikatakan memiliki referensi yang kuat ke objek .
Referensi yang lemah memungkinkan pengumpul sampah untuk mengumpulkan objek sambil tetap memungkinkan aplikasi untuk mengakses objek. Referensi lemah hanya berlaku selama jumlah waktu yang tidak ditentukan sampai objek dikumpulkan ketika tidak ada referensi yang kuat. Ketika Anda menggunakan referensi yang lemah, aplikasi masih dapat memperoleh referensi yang kuat ke objek, yang mencegahnya diambil oleh pengumpul sampah. Namun, selalu ada risiko bahwa pengumpul sampah akan sampai ke objek terlebih dahulu sebelum referensi kuat dibuat kembali.
Referensi yang lemah berguna untuk objek yang menggunakan banyak memori, tetapi dapat dibuat ulang dengan mudah jika direklamasi kembali oleh pengumpulan sampah.
Misalkan tampilan pohon dalam aplikasi Windows Forms menampilkan pilihan opsi hierarkis yang kompleks kepada pengguna. Jika data yang mendasar besar, menyimpan pohon dalam memori tidak efisien ketika pengguna terlibat dengan sesuatu yang lain dalam aplikasi.
Ketika pengguna beralih ke bagian lain dari aplikasi, Anda dapat menggunakan WeakReference kelas untuk membuat referensi lemah ke pohon dan menghancurkan semua referensi yang kuat. Ketika pengguna beralih kembali ke pohon, aplikasi mencoba untuk mendapatkan referensi yang kuat ke pohon dan, jika berhasil, menghindari rekonstruksi pohon.
Untuk membuat referensi lemah dengan objek, Anda membuat WeakReference menggunakan instans objek yang akan dilacak. Untuk contoh kode, lihat WeakReference di pustaka kelas.
Referensi Lemah Jangka Pendek dan Jangka Panjang
Anda dapat membuat referensi lemah singkat atau referensi lemah yang panjang:
Pendek
Target referensi lemah singkat menjadi
nullketika objek dikumpulkan oleh pengumpulan sampah. Referensi lemah itu sendiri adalah objek yang dikelola, dan tunduk pada pengumpulan sampah seperti objek yang dikelola lainnya. Referensi lemah singkat adalah konstruktor tanpa parameter untuk WeakReference.Panjang
Referensi lemah yang panjang dipertahankan setelah metode objek Finalize dipanggil. Ini memungkinkan objek dibuat ulang, tetapi status objek tetap tidak dapat diprediksi. Untuk menggunakan referensi panjang, menentukan
truedalam WeakReference konstruktor.Jika jenis objek tidak memiliki Finalize metode, fungsionalitas referensi lemah singkat berlaku dan referensi lemah hanya berlaku sampai target dikumpulkan, yang dapat terjadi kapan saja setelah finalizer dijalankan.
Untuk menetapkan referensi yang kuat dan menggunakan objek lagi, ubah tipe properti Target dari WeakReference ke tipe objek tersebut.
Target Jika properti mengembalikan null, objek dikumpulkan; jika tidak, Anda dapat terus menggunakan objek karena aplikasi telah mendapatkan kembali referensi yang kuat untuk itu.
Panduan untuk Menggunakan Referensi Lemah
Gunakan referensi lemah panjang hanya jika diperlukan karena status objek tidak dapat diprediksi setelah finalisasi.
Hindari menggunakan referensi lemah ke objek kecil karena penunjuk itu sendiri mungkin sebesar atau lebih besar.
Hindari menggunakan referensi yang lemah sebagai solusi otomatis untuk masalah manajemen memori. Sebagai gantinya, kembangkan kebijakan caching yang efektif untuk menangani objek aplikasi Anda.