Indeed.
If you allocate data faster than the GC mark phase can find and mark it, it enlists the "mutator" (I.e., your program) to assist it in the GC. Roughly, allocations are now followed by some marking work, so the allocation rate doesn't outpace the marking rate.
The solution is to lower your allocation rate in your program, or make the data you have easier to mark by avoiding pointers where a flat storage is more applicable. Also, `sync.Pool` comes to mind as a tool which might be useful, once you've profiled and found the problematic spots.
J.