Memory Leaks dan Garbage Collection

Memory Leaks adalah penurunan kinerja sistem secara bertahap yang terjadi seiring waktu akibat dari penuhnya ruang pada RAM komputer yang disebabkan aplikasi dirancang atau diprogram dengan buruk dimana gagal mengosongkan ruang memori saat tidak lagi dibutuhkan.

Sementara Garbage Collection adalah istilah yang diberikan untuk proses otomatis yang dapat ditemukan di beberapa sistem dan bahasa pemrograman, di mana ruang memori yang tidak lagi dibutuhkan oleh aplikasi dikonsolidasikan dan dibebaskan untuk digunakan kembali.

Salah satu konsep misterius yang aneh di dunia perangkat lunak komputer, terutama Windows, adalah kebocoran memori atau lebih dikenal dengan Memory Leaks. Memory Leaks adalah penyebab utama ketidakstabilan sistem dan bisa menjadi mimpi buruk untuk dihadapi.

Jika sebuah program terus berjalan, kebocoran memori sekecil apapun pada akhirnya akan menyebabkan program atau sistem crash karena semakin banyak sumber daya yang terkunci sampai habis.

Memory Leaks

Memory Leaks (Kebocoran Memori)

Memory Leaks dimulai ketika sebuah program meminta ruang memori dari sistem operasi untuk dirinya sendiri juga datanya.

Saat sebuah program beroperasi, terkadang membutuhkan lebih banyak memori dan membuat permintaan tambahan. Sekarang kita sampai pada salah satu aturan pemrograman yang baik: Setiap memori yang diminta dan dialokasikan harus dilepaskan secara eksplisit oleh program aplikasi ketika tidak lagi membutuhkannya atau ketika program ditutup. Program yang dapat melakukan ini disebut program yang berperilaku baik.

Sayangnya, tidak semua program atau aplikasi berperilaku baik. Dan kegagalan program untuk menghapus objek dengan benar sering kali tidak disadari karena program tersebut merupakan aplikasi ringan atau tidak membuat banyak instance objek, sehingga membutuhkan waktu lebih lama untuk menghabiskan sumber daya.

Tetapi objek program dapat memiliki efek samping lain yang tidak hilang ketika program dihentikan. Seorang programmer tidak boleh berasumsi bahwa objek hanya melakukan operasi sederhana yang akan dibatalkan ketika program berakhir.

Selain itu, program terkadang berakhir secara tidak terduga atau error sebelum dapat dimatikan untuk dapat mengembalikan ruang memori yang digunakan. Pada akhirnya potongan-potongan memori yang tersebar di seluruh RAM sistem ditandai sebagai sedang digunakan dan tidak dapat disentuh kecuali oleh aplikasi pemiliknya, meskipun sebenarnya tidak demikian.

Seiring waktu, saat beberapa aplikasi berperilaku buruk berjalan, semakin banyak memory leaks dimana semakin banyak ruang memori yang tidak dapat digunakan, dan jumlah memori yang tersedia untuk digunakan semakin kecil.

Sistem operasi atau perangkat lunak sistem sendiri belum tentu anti “Memory Leaks” karena pada akhir 1998, Apple Computer Inc. memposting perbaikan untuk kebocoran memori AppleScript.

Pada akhirnya sistem operasi menemukan bahwa tidak ada cukup memori untuk melakukan hampir semua hal yang dibutuhkan atau diinginkan. Kemudian Sistem operasi menampilkan pesan kesalahan yang mengatakan memori rendah dan meminta beberapa aplikasi ditutup untuk mengosongkan ruang.

Tetapi karena aplikasi yang mengunci sebagian besar memori tersebut tidak benar-benar berjalan, kita tidak dapat mengosongkan ruang dengan menutupnya. Perbaikan yang biasa dilakukan adalah reboot atau restart sistem.

Garbage Collection (Pengumpulan Sampah)

Garbage Collection

Membebaskan ruang memori pada sistem operasi untuk digunakan kembali yang mana yang telah diambil alih oleh Memory Leaks disebut Garbage Collection. Di masa lalu, program harus secara eksplisit meminta penyimpanan dan kemudian mengembalikannya ke sistem saat tidak lagi dibutuhkan. Istilah Garbage Collection tampaknya pertama kali digunakan dalam bahasa pemrograman Lisp, yang dikembangkan pada 1960-an.

Beberapa sistem operasi menyediakan deteksi kebocoran memori sehingga masalah dapat dideteksi sebelum aplikasi atau sistem operasi crash.

Beberapa alat pengembangan program, seperti Java, juga menyediakan Garbage Collection otomatis untuk pengembang. Keuntungan nyata dari Garbage Collection adalah bahwa proses yang terjadi terlepas dari apakah programmer memperhitungkannya atau tidak.