Lua - Pembersihan Sampah
Halo, para programer yang sedang belajar! Hari ini, kita akan mendalami dunia yang menarik tentang pembersihan sampah di Lua. Jangan khawatir jika Anda belum pernah mendengar tentang pembersihan sampah sebelumnya - pada akhir tutorial ini, Anda akan menjadi ahli! Ayo kita mulai perjalanan yang menarik ini bersama-sama.
Apa Itu Pembersihan Sampah?
Sebelum kita mulai, mari kita pahami apa itu pembersihan sampah. Bayangkan Anda di pesta ulang tahun, dan di sana ada balon di mana-mana. Selama pesta berlangsung, beberapa balon pecah ataudeflasi. Balon-balon ini tidak lagi berguna, tapi mereka masih mengambil ruang. Dalam pemrograman, kita menyebut balon tak berguna ini sebagai "sampah" - mereka adalah objek di memori yang program kita tidak lagi butuhkan.
Pembersihan sampah adalah seperti memiliki seorang teman yang membantu di pesta yang mengumpulkan dan membuang balon tak berguna ini, membebaskan ruang untuk balon baru (atau dalam kasus kita, objek baru di memori).
Bagaimana Lua Menangani Pembersihan Sampah
Lua menggunakan pembersih sampah otomatis, yang berarti Anda tidak perlu membersihkan memori secara manual - Lua melakukan itu untuk Anda! Apakah itu tidak menyenangkan? Itu seperti memiliki layanan pembersihan pribadi untuk kode Anda.
mari lihat contoh sederhana:
function createBalloon()
local balloon = {}
balloon.color = "merah"
balloon.size = "besar"
return balloon
end
local myBalloon = createBalloon()
print(myBalloon.color) -- Output: merah
myBalloon = nil
-- Di titik ini, objek balon menjadi kualifikasi untuk pembersihan sampah
Dalam contoh ini, kita membuat objek balon dan menugaskan nya ke myBalloon
. Ketika kita menset myBalloon
ke nil
, kita sebenarnya mengatakan, "Saya tidak lagi memerlukan balon ini." Pembersih sampah Lua akan akhirnya datang dan membersihkan memori yang digunakan oleh objek balon ini.
Jeda Pembersih Sampah
Sekarang, mari bicara tentang Jeda Pembersihan Sampah. Bayangkan teman yang membantu di pesta memutuskan untuk membersihkan semua sekaligus. Ini mungkin akan ganggu pesta untuk saat, kan? Demikian pula, ketika pembersih sampah Lua berjalan, itu dapat menyebabkan jeda singkat dalam eksekusi program Anda.
Lua memungkinkan kita mengontrol jeda ini menggunakan fungsi collectgarbage("pause")
. Berikut cara kerjanya:
collectgarbage("pause") -- Jeda pembersihan sampah
-- Kode kritis Anda di sini
collectgarbage("restart") -- Lanjutkan pembersihan sampah
Ini sangat berguna saat Anda melakukan sesuatu yang sensitif terhadap waktu dan tidak ingin ada gangguan.
Faktor Tambah Jeda Pembersihan Sampah
Faktor Tambah adalah seperti mengatakan ke teman pembersih, "Hey, bersihkan sedikit lagi (atau kurang) setiap kali Anda membersihkan." Kita dapat mengatur ini menggunakan fungsi collectgarbage("setstepmul", multiplier)
.
-- Buat pembersih sampah bekerja keras setiap siklus
collectgarbage("setstepmul", 200)
-- Buat banyak sampah
for i = 1, 1000000 do
local temp = {}
end
-- Paksa siklus pembersihan sampah
collectgarbage("collect")
Dalam contoh ini, kita mengatakan kepada pembersih sampah untuk bekerja dua kali lebih keras (200% upaya biasanya) selama setiap siklus pembersihan.
Fungsi Pembersih Sampah
Lua menyediakan beberapa fungsi untuk berinteraksi dengan pembersih sampah. Mari kita lihat mereka dalam tabel praktis:
Fungsi | Deskripsi |
---|---|
collectgarbage("collect") |
Melakukan siklus pembersihan sampah penuh |
collectgarbage("count") |
Mengembalikan total memori yang digunakan oleh Lua (dalam KB) |
collectgarbage("step", size) |
Melakukan langkah pembersihan sampah |
collectgarbage("isrunning") |
Memeriksa apakah pembersih sedang berjalan |
collectgarbage("stop") |
Menghentikan pembersih sampah |
collectgarbage("restart") |
Memulai kembali pembersih sampah |
collectgarbage("setpause", pause) |
Mengatur jeda antara siklus pembersihan |
collectgarbage("setstepmul", multiplier) |
Mengatur faktor tambah |
Mari kita lihat beberapa diantaranya dalam aksi:
print("Memori yang digunakan: " .. collectgarbage("count") .. " KB")
-- Buat sedikit sampah
for i = 1, 100000 do
local temp = {}
end
print("Memori setelah membuat sampah: " .. collectgarbage("count") .. " KB")
collectgarbage("collect")
print("Memori setelah pembersihan: " .. collectgarbage("count") .. " KB")
if collectgarbage("isrunning") then
print("Pembersih sampah sedang berjalan")
else
print("Pembersih sampah tidak berjalan")
end
Skrip ini menunjukkan bagaimana untuk memeriksa penggunaan memori, membuat sampah, memaksa siklus pembersihan, dan memeriksa apakah pembersih sedang berjalan.
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama ke dunia pembersihan sampah di Lua. Ingat, meskipun itu menarik untuk belajar tentang detil tingkat rendah ini, salah satu keindahan Lua adalah bahwa Anda biasanya tidak perlu khawatir tentang pembersihan sampah dalam pemrograman sehari-hari. Itu seperti memiliki perawan pembersihan magis untuk kode Anda!
Namun, memahami konsep ini dapat membantu Anda menulis program yang lebih efisien, khususnya saat berurusan dengan jumlah besar data atau dalam aplikasi kritis performa.
Terus latih, terus jelajahi, dan yang paling penting, terus bersenang-senang dengan Lua! Siapa sangka bahwa mengambil sampah bisa begitu menarik, kan?
Credits: Image by storyset