Welcome to the oemof forum
Normally it is possible to run multiple models in a row and in my case the memory is automatically emptied after each run. You just have to make sure that you dump your results instead of keeping them in your memory but I guess you already do this.
There are memory profilers available in python. Here is a blog where topic 6 might be interesting for you.
There are also memory trackers for your OS (Windows, Linux, Mac,…) or just a small application that shows the memory usage so that you can follow it during a python run and check if the memory use is higher at the end (when you start your second run). I guess you are close to your limit.
The memory usage depends on the number of variables and constraints, so a storage might use more memory than a transformer. So counting the regions does not really help.