Kebocoran dan Pengumpulan Sampah

Masalah manajemen memori adalah masalah yang sulit dalam komputasi, dan kode yang ditulis dengan buruk sering kali dapat membuang memori dalam apa yang disebut memori. Dengan demikian, pengumpul sampah diciptakan untuk membantu mengelola memori dengan lebih baik.

Cara utama program mengalokasikan memori secara dinamis adalah dengan menanyakan sistem operasi dan menerima pointer ke blok memori yang dapat Layanan Pengumpulan Sampah digunakan oleh program. Setelah itu terjadi, sistem operasi menandai area memori sebagai sedang digunakan, dan itu tidak dapat digunakan lagi sampai program membebaskannya atau keluar. Ini dapat menyebabkan masalah, karena tidak semua program menangani memori dengan benar. Jika sebuah program berakhir dalam situasi di mana ia tidak lagi menggunakan memori yang sudah dialokasikan tetapi belum merilisnya kembali ke sistem operasi, kebocoran memori telah terjadi. Program tidak dapat mengakses memori, tetapi sistem operasi tidak tahu bahwa itu tidak lagi digunakan.

Ini bisa menjadi masalah parah jika program melewati banyak memori atau berjalan untuk waktu yang lama. Sebagai contoh, browser web awal sering mengalami masalah ini, karena mereka perlu merealokasi memori secara dinamis untuk memuat halaman web. Jika browser tetap digunakan untuk waktu harga tempat sampah besar yang lama, area memori yang bocor akan mulai menumpuk, akhirnya menghabiskan semua memori dalam sistem dan terhempas.

Untuk mengatasi masalah ini, sistem pengumpulan sampah dibuat. Untuk bahasa pemrograman yang mengimplementasikan ini, sistem secara berkala memeriksa memori program dan mencari referensi ke blok lain, kemudian membandingkannya dengan blok memori yang telah dialokasikan untuk program. Jika ada memori yang tidak lagi dapat digunakan oleh program, itu akan dibebaskan oleh pengumpul sampah.

Meskipun sistem ini memecahkan masalah kebocoran memori, sistem ini memperkenalkan beberapa masalah sendiri. Pengumpulan sampah tidak gratis. Program harus ditunda sementara pengumpul sampah memeriksa semua memori program, dan ini terjadi tanpa terduga. Untuk program yang perlu bekerja secara waktu nyata, seperti game, ini bisa bermasalah. Pengumpulan sampah dari jumlah besar memori yang mungkin digunakan sebuah game membutuhkan waktu yang lama, jadi bagi pemain, sepertinya permainan telah membeku.

Selain itu, pengumpulan sampah tidak ada dalam semua bahasa. Secara umum, ini hanya digunakan di lingkungan yang dikelola, seperti Java dan .NET. Seorang pemulung membutuhkan lingkungan tingkat yang lebih tinggi agar dapat berjalan. Inilah sebabnya mengapa bahasa tingkat rendah dijalankan langsung oleh sistem operasi, seperti C dan C ++, tidak memiliki pemulung. Dalam bahasa-bahasa itu, sangat penting untuk melacak blok memori dinamis dan membebaskan mereka ketika mereka tidak lagi digunakan.

Memahami manajemen memori adalah bagian besar dari menjadi pemrogram yang efektif, dan mengetahui berbagai masalah yang disebabkan oleh kebocoran memori dan pengumpul sampah akan membantu Anda menulis kode yang lebih baik.

Leave A Reply

Your email address will not be published. Required fields are marked *