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

Game Lag White Paper › L10 Memory

Allocation surge Allocation storms

Cause ID mem-alloc · Primary owner Game team (Server development)

Open the interactive card with figures and simulations →

Creating large numbers of temporary objects during an event makes GC run far more often than usual.

Why Item drops, combat logs, and event rewards create a flood of temporary objects → Effect GC runs several times as often, and objects not yet discarded get promoted to the old generation, so full GCs come sooner too → On screen Periodic hitches only during events

Symptoms
Stutter, Freeze
Factors
Stall
Who’s affected
Whole server, Specific zone/channel
When
When crowds gather
Owner
Primary owner Game team (Server development)
Game team action items
Use object pools and reusable buffers, profile allocations.
On the graph
Rises with load · GC count, allocation rate
Where to look
Count GCs per minute from GC logs (Java -Xlog:gc, Go GODEBUG=gctrace=1); on .NET, check allocation volume and GC count in dotnet-counters (dotnet.gc.heap.total_allocated and dotnet.gc.collections on .NET 9 and later, Allocation Rate and Gen 0 GC Count on 8 and earlier). Overlay with concurrent users and event times
Confirmed if
When the event starts, allocation rate and GC count climb faster than player count, and short pauses become frequent. Back to normal once the event ends
Ruled out if
GC count unchanged but each pause gets longer: live data has grown (mem-gc-thrash, mem-leak)
Check with
Infra tools (no game code needed)

Sources

  1. Garbage Collector Implementation Oracle
    Minor GC when the young generation fills; some surviving objects move to the old generation, and when the old generation fills, the whole heap is collected (much slower than a minor GC); -Xlog:gc writes one line per GC
  2. A Guide to the Go Garbage Collector Go
    The higher the allocation rate, the more often GC cycles run; GODEBUG=gctrace=1 prints GC trace output
  3. dotnet-counters diagnostic tool .NET
    .NET 9 and later show dotnet.gc.heap.total_allocated and dotnet.gc.collections; .NET 8 and earlier show Allocation Rate and Gen 0 GC Count

See also

Same layer: L10 Memory

Same symptom (Stutter), other layers

View the interactive card with figures and simulations