Jika alokasi dan pembebasan yang berulang memecah ruang kosong menjadi potongan kecil, proses menahan memori jauh lebih banyak daripada yang benar-benar dipakai.
Mengapa Banyak thread mengalokasikan dan membebaskan memori berukuran beragam dalam waktu lama → Akibatnya Ruang kosong tersebar dalam potongan kecil sehingga tidak bisa dikembalikan ke OS, dan penggunaan memori terus naik seperti kebocoran → Di layar Makin lama menyala, makin lambat karena swap atau kehabisan memori, lalu dihentikan paksa
Penanggung jawab utama Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Gunakan memory pool per ukuran dan allocator yang tahan fragmentasi (jemalloc, mimalloc, dan lainnya).
Di grafik
Naik perlahan · Memori proses (RSS)
Yang diperiksa
Jalankan dua server dengan build yang sama; pada salah satunya saja, kurangi jumlah arena glibc dengan environment variable MALLOC_ARENA_MAX atau ganti ke allocator lain seperti jemalloc, lalu bandingkan RSS di pidstat -r selama beberapa hari
Cocok jika
Jumlah pemain dan objek kurang lebih sama, tetapi hanya server yang diubah yang kenaikan RSS-nya berhenti atau turun drastis
Tidak cocok jika
RSS tetap naik dengan cara yang sama walaupun allocator diganti: mengarah ke memori yang tidak dibebaskan (mem-leak)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Polanya sama dengan kebocoran, tetapi analisis heap tidak menemukan titik kebocorannya. Allocator default Linux (glibc) sangat rentan pada server dengan banyak thread, sehingga mengganti allocator saja kadang sudah menurunkan penggunaan memori secara drastis.
Sumber
mallopt(3) — Linux manual pageLinux man-pages glibc malloc membuat arena hingga kelipatan jumlah CPU untuk mengurangi perebutan di antara thread, dan makin banyak arena, makin besar penggunaan memori (dibatasi dengan M_ARENA_MAX, bisa juga diatur lewat environment variable MALLOC_ARENA_MAX)
jemalloc memory allocatorjemalloc Implementasi malloc serbaguna yang mengutamakan penghindaran fragmentasi dan skalabilitas konkurensi