한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L10 Memori

Kebocoran memori Memory leak

ID penyebab mem-leak · Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)

Buka kartu interaktif dengan gambar dan simulasi →

Memori yang tidak dibebaskan menumpuk sedikit demi sedikit, lalu beberapa hari kemudian berujung pada GC yang berjalan tanpa henti, swap, atau proses yang dihentikan paksa.

Mengapa Data karakter yang sudah logout dan event handler tidak dibebaskan → Akibatnya Memori bebas berkurang selama beberapa hari → Di layar Normal tepat setelah maintenance, makin hari makin lag, akhirnya server down

Gejala
Slow motion, Freeze, Disconnect
Faktor
Stall
Siapa yang mengalami
Seluruh server
Kapan
Makin lama menyala, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)
Tugas Tim Pengembang Game
Analisis heap dump, jalankan load test jangka panjang.
Tugas Tim Infrastruktur
Pantau tren penggunaan memori per proses dan pasang alert.
Di grafik
Naik perlahan · Memori proses (RSS), heap tepat setelah GC
Yang diperiksa
Periksa memori proses server game (RSS di pidstat -r) dalam rentang beberapa hari, dan untuk server yang memakai GC, periksa heap yang tersisa tepat setelah GC. Java: nilai setelah GC dari pasangan penggunaan sebelum dan sesudah GC di baris -Xlog:gc; .NET: ukuran heap setelah GC di dotnet-counters (.NET 9 ke atas: dotnet.gc.last_collection.heap.size, 8 ke bawah: GC Heap Size)
Cocok jika
Heap yang tersisa tepat setelah GC (garis dasar) naik setiap hari sejak restart, dan tetap tidak turun pada dini hari saat pemain sedikit
Tidak cocok jika
Garis dasar heap datar tetapi hanya RSS yang naik: lebih mungkin fragmentasi (mem-fragment) atau native memory. Naik turun mengikuti jumlah pemain: penggunaan normal
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Jika server dimulai ulang setiap minggu saat maintenance rutin, kebocoran tertutupi dan lama tidak ketahuan. Kebocoran sering baru muncul tiba-tiba saat maintenance tertunda sekali saja, atau saat jumlah pemain bertambah karena event.

Sumber

  1. Troubleshoot Memory Leaks Oracle
    Jika eksekusi makin lambat, curigai kebocoran; akhirnya memori habis dan terjadi terminasi abnormal. Data utama untuk analisis kebocoran adalah heap dump
  2. Debug a memory leak in .NET .NET
    Walaupun ada GC, objek yang tidak diperlukan tetapi terus direferensikan menjadi kebocoran, yang menyebabkan penurunan performa dan OutOfMemoryException. Memeriksa tren memori dan menganalisis dump
  3. Garbage Collector Implementation Oracle
    Baris -Xlog:gc berformat “penggunaan sebelum GC->penggunaan setelah GC (ukuran heap)”
  4. dotnet-counters diagnostic tool .NET
    .NET 9 ke atas menampilkan dotnet.gc.last_collection.heap.size, .NET 8 ke bawah menampilkan GC Heap Size
  5. pidstat(1) — Linux manual page sysstat
    -r: RSS per proses (memori yang benar-benar ada di RAM) dan page fault

Lihat juga

Lapisan yang sama: L10 Memori

Penyebab di lapisan lain dengan gejala yang sama (Slow motion)

Lihat kartu interaktif dengan gambar dan simulasi