Quick answer: Unity Incremental GC producing a 30ms pause despite being incremental? Some allocations are 'unyielding' - profile with the Profiler's GC.Alloc column to find them.
GC enabled in 'Incremental' mode. Most frames are smooth; one frame in 10 spikes to 30ms.
Find allocation hotspots
Profiler > Memory > GC.Alloc. Sort by size; one row dominates.
Pool large allocations
Common culprit: list resizes inside hot loops. Pre-allocate; never resize during gameplay.
Tune incremental budget
GarbageCollector.incrementalTimeSliceNanoseconds = 500000;Smaller budget = more pauses, each shorter. Trade frequency for amplitude.
“Incremental GC is a budget. The budget can't help an allocation that's bigger than the budget.”
Run the Profiler with GC.Alloc enabled during representative gameplay. Per-call site costs are visible; refactor in priority order.