I don’t want to jinx it, but I may have resolved the issue.
Currently soaking the fix on Linux and Windows to see if memory allocation creeps up over time.
Early numbers indicating sub-200 MB memory required for a full node after it has synced, which is very different from the 5GB my testnet node was consuming.
While syncing with the fix, it fluctuates between 500-1500MB.
I might have discovered a second “leak”; not sure how to characterize it yet, but I may work on another optimization as well.
I’ll confirm my findings with the Golang devs then write a post with troubleshooting steps in case anyone needs to do some performance profiling in the future.