NB. I'm posting this here as a note to self / help for others as it took me two full days to track down the problem.
The original issue: In a pixi.js (v7+) based browser game using lots of Graphics objects, the 'memory footprint' in Chrome's (v121, Apple Silicon, MacOS 12.7.1) Task Manager would gradually rise to several GB and eventually 'Aw snap' the tab.
This reported 'memory footprint' value was completely different to performance.memory.usedJSHeapSize (around 30MB). Chrome Task Manager also reported low numbers for 'JavaScript Memory' and 'GPU Memory' (you have to enable these columns by right clicking the column headers in the Task Manager).
Also — the Performance Monitor in 'more tools' in Chrome's Developer Tools showed no increase in Dom Nodes, JS Event Listeners, Heap Size or anything else. So what was causing the increase in 'memory footprint'?
I checked everything was being dereferenced properly in the lifecycle of all my game objects, I tried different versions of pixi.js, tried removing all shaders, all sorts of things. I eventually found the problem:
AudioNodes. It appears Chrome's Dev Tools do not report memory usage attributed to AudioNodes and WebAudio related worklets/threads anywhere, at all. My problem was that I'd been instantiating new ConvolverNodes for reverb effects without fully disconnecting the previous ones from all of their inputs and outputs, meaning they weren't being garbage collected.
I found this out by using MacOS Activity Monitor's 'Sample Process' function, which listed all the threads related to the process, where I noticed a lot of threads called: 'Reverb convolution background thread'.