How we tracked down a Go 1.24 memory regression across hundreds of pods | Datadog
Jul 17, 2025Nayef Ghattas

Summary
This post details the investigation and resolution of a memory regression in Go 1.24, specifically related to the Go heap and the `mallocgc` function, which caused increased RSS usage. The investigation involved analyzing system metrics (RSS) versus Go runtime metrics, examining `/proc/[pid]/smaps`, and collaborating with the Go community to pinpoint the root cause. The post also sets up a follow-up on how Go 1.24's Swiss Tables implementation led to memory reductions.
More from the Java CPU Profiling trail
- How we built an async-aware Python profiler | Datadog
- Unbiased Java CPU profiling with JFR in JDK 25 | Datadog
- From hand-tuned Go to self-optimizing code: Building BitsEvolve | Datadog
- .NET Continuous Profiler: Exception and lock contention | Datadog
- .NET Continuous Profiler: CPU and wall time profiling | Datadog