  An increasing number of high-performance distributed systems are written in
garbage collected languages. This removes a large class of harmful bugs from
these systems. However, it also introduces high tail-latency do to garbage
collection pause times. We address this problem through a new technique of
garbage collection avoidance which we call Blade. Blade is an API between the
collector and application developer that allows developers to leverage existing
failure recovery mechanisms in distributed systems to coordinate collection and
bound the latency impact. We describe Blade and implement it for the Go
programming language. We also investigate two different systems that utilize
Blade, a HTTP load-balancer and the Raft consensus algorithm. For the
load-balancer, we eliminate any latency introduced by the garbage collector,
for Raft, we bound the latency impact to a single network round-trip, (48
{\mu}s in our setup). In both cases, latency at the tail using Blade is up to
three orders of magnitude better.
