I had similar experience of finding memory leak in Python. It's a 64 G server, but we load everything from database to memory. I didn't success.
This experience made me question myself: is it wrong to create a lot of objects in memory and let them reference each other, and hope Garbage Collector to magically work?
If instead of object, we just put data into memory more organized as a (column) database, then we don't need GC anymore.
OOP made programming easier, by modeling real world as object. At the same time, it made memory management harder, since it's not nature to the hardware's memory model: a linear array of memory cells.
I wish in future, there is a place for this paradigm of in memory database model of programming.