yeah, that's the thing about garbage collection, and the big weakness in Go's garbage collection has to do with what is called "escape analysis" - figuring out whether a value allocated in one scope goes upwards to the caller and so on
i'm hot on the trail though, i think maybe this evening i will finally have this bug squashed
so far it looks like part of the problem is i have a set of decisions that evaluate whether to ignore a given query result but that decision is not made inside the scope where it is created, and so the GC is holding the memory and not letting it go
i may have just fully nailed the problem now though, fingers crossed