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

Buku Putih Lag Game › L10 Memori

Lonjakan alokasi Allocation storms

ID penyebab mem-alloc · Penanggung jawab utama Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Jika objek sementara dibuat dalam jumlah besar selama event, GC berjalan jauh lebih sering daripada biasanya.

Mengapa Objek sementara melonjak karena drop item, log pertempuran, dan hadiah event → Akibatnya GC berjalan beberapa kali lebih sering, dan objek yang belum sempat dibuang pindah ke old generation sehingga Full GC juga datang lebih cepat → Di layar Tersendat sesaat secara berkala, hanya saat event

Gejala
Patah-patah, Freeze
Faktor
Stall
Siapa yang mengalami
Seluruh server, Lokasi/channel tertentu
Kapan
Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Gunakan object pool, pakai ulang buffer, lakukan profiling alokasi.
Di grafik
Naik mengikuti beban · Jumlah GC, laju alokasi
Yang diperiksa
Hitung jumlah GC per menit dari log GC (Java: -Xlog:gc, Go: GODEBUG=gctrace=1); untuk .NET, periksa volume alokasi dan jumlah GC di dotnet-counters (.NET 9 ke atas: dotnet.gc.heap.total_allocated dan dotnet.gc.collections, 8 ke bawah: Allocation Rate dan Gen 0 GC Count). Tumpangkan dengan jumlah pemain online bersamaan dan waktu event
Cocok jika
Begitu event dimulai, laju alokasi dan jumlah GC naik lebih tajam daripada kenaikan jumlah pemain, dan jeda singkat makin sering. Setelah event selesai, kembali normal
Tidak cocok jika
Jumlah GC tetap, tetapi setiap jeda makin panjang: mengarah ke data hidup yang bertambah (mem-gc-thrash, mem-leak)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)

Sumber

  1. Garbage Collector Implementation Oracle
    Saat young generation penuh terjadi minor GC; sebagian objek yang bertahan dipindahkan ke old generation, dan saat old generation penuh, seluruh heap dikumpulkan (jauh lebih lama daripada minor GC); -Xlog:gc mencatat satu baris per GC
  2. A Guide to the Go Garbage Collector Go
    Makin tinggi laju alokasi, makin sering siklus GC; output trace GC dengan GODEBUG=gctrace=1
  3. dotnet-counters diagnostic tool .NET
    .NET 9 ke atas menampilkan dotnet.gc.heap.total_allocated dan dotnet.gc.collections, .NET 8 ke bawah menampilkan Allocation Rate dan Gen 0 GC Count

Lihat juga

Lapisan yang sama: L10 Memori

Penyebab di lapisan lain dengan gejala yang sama (Patah-patah)

Lihat kartu interaktif dengan gambar dan simulasi