Garbage collection pauses under 50ms
Why it matters
A GC pause of 250ms during a scroll or animation freezes the frame pipeline: no input events are processed, no pixels are painted. Users experience this as a sudden hard stutter that is qualitatively worse than slow load times. ISO 25010:2011 time-behaviour captures the latency; the GC pressure that produces long pauses is typically caused by allocating large arrays or objects inside render loops or scroll handlers — code patterns that generate garbage faster than incremental GC can collect it.
Severity rationale
Medium because GC pauses over 50ms produce visible jank during animations and scrolling, but the impact is intermittent and depends on workload and device memory, making it a degraded-experience issue rather than a blocking failure.
Remediation
Move expensive computations out of render loops using useMemo or useCallback. For server-side Node.js services, use clinic.js to identify GC pressure hotspots.
// components/dashboard.tsx — memoize to reduce GC pressure in render
const processedRows = useMemo(
() => rawData.map((row) => transformRow(row)), // runs once per rawData change
[rawData]
)
For scroll handlers, avoid creating new arrays or objects inside the callback — pre-allocate or reuse structures.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Performance Deep Dive Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · time-behaviour — Time Behaviour (performance efficiency)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from performance-deep-dive·automated