Interpreting Chrome memory tool’s results for a memory leak?

I’m pretty sure I have a memory leak. When I perform certain actions (e.g. opening a menu) repeatedly, then use the 3 heap snapshots trick, there’s always leaked memory. The retainers are different each time. I spent 2 days trying to interpret the results, but I still have no idea what it means. E.g. here’s an example of a memory leak:

enter image description here

It’ll be great if someone knew the answers to any of these questions:

  1. Is it correct to interpret this as: an HTMLInputElement is somehow referencing a function that calls useContext?

  2. What do “instruction_stream”, “previous”, and “context” in the retainers mean?

  3. I know “(compiled code)” means it’s V8 creating optimized versions of functions. However, it seems like Chrome is producing new optimized versions of “useContext” multiple times? I repeated the 3 heaps trick many times and “useContext” is in there every time.

  4. Where can I find more about what “(code relocation info)”, “(code deopt data)”, “(source position table)”, etc mean?