Salah satu keuntungan paling jelas dari AVA adalah mekanisme manajemen memori. Anda hanya perlu membuat objek, mekanisme pemulihan sampah Java bertanggung jawab untuk mengalokasikan dan melepaskan memori. Namun, situasinya tidak sesederhana yang dibayangkan, karena kebocoran memori sering terjadi dalam aplikasi Java.
Tutorial ini menunjukkan apa itu kebocoran memori, mengapa ada kebocoran memori dan bagaimana mencegah kebocoran memori.
Apa itu kebocoran memori?
Definisi: Jika objek tidak lagi digunakan dalam aplikasi, tetapi karena mereka dikutip di tempat lain, daur ulang sampah tidak dapat dihapus (ini menyebabkan banyak memori menjadi tidak masuk akal, menghasilkan overflow memori. Terjemahan).
Untuk memahami definisi ini, kita perlu memahami keadaan objek dalam memori. Gambar di bawah ini menunjukkan mereka yang tidak digunakan, dan itu tidak dikutip.
Dari gambar, kita dapat melihat objek referensi dan objek yang tidak siap (rentang). Tidak ada objek yang dikutip yang dapat didaur ulang oleh mekanisme daur ulang sampah, dan objek referensi tidak dapat didaur ulang oleh mekanisme pemulihan sampah. Tentu saja, target tidak digunakan karena tidak ada objek lain yang mengutipnya. Namun, tidak semua objek tidak dikutip. Beberapa benda yang tidak digunakan masih dikutip di tempat lain! Ini adalah penyebab kebocoran memori.
Mengapa kebocoran memori terjadi?
Mari kita datang ke contoh di bawah ini untuk melihat mengapa kebocoran memori terjadi. Dalam contoh berikut, objek A merujuk objek B. Siklus hidup A (T1-T4) jauh lebih lama dari siklus hidup (T2-T3) B. Ketika B tidak lagi digunakan dalam aplikasi, A masih memegang referensi ke B. Dengan cara ini, mekanisme pemulihan sampah tidak dapat menghilangkan B dari memori. Ini cenderung menyebabkan limpahan memori, karena jika banyak objek lain seperti A, akan ada banyak objek yang tidak dapat didaur ulang dalam memori, yang akan mengkonsumsi banyak ruang memori.
Mungkin juga bahwa B memegang sejumlah besar referensi ke objek lain. Objek -objek ini yang dirujuk oleh B tidak akan didaur ulang. Semua benda yang tidak digunakan ini akan mengkonsumsi ruang memori yang berharga.
Bagaimana cara mencegah kebocoran memori?
Berikut ini adalah beberapa keterampilan cepat untuk mencegah kebocoran memori:
1. Perhatikan kelas pengumpulan, seperti hashmap, arraylist, dll., Karena mereka adalah tempat kebocoran memori sering terjadi. Ketika mereka dinyatakan sebagai objek statis, siklus hidup mereka selama siklus hidup aplikasi.
2. Perhatikan monitor insiden dan panggilan balik. Jika suatu kelas terdaftar dengan pendengar, tetapi ketika kategori tidak lagi digunakan, perangkat pemantauan mungkin tidak dibatalkan, dan kebocoran memori dapat terjadi.
3. "Jika sebuah kelas mengelola ingatannya sendiri, programmer harus waspada terhadap kebocoran memori."