When you say "the memory in the background keeps growing and is never released" did you run the memory analysis tool to determine which objects are holding on to it? It is possible something in your navigation backstack is still alive.
Also note that the .NET Garbage Collector is pretty indeterministic wrt when it runs, so it might not actually be leaking, but GC just hasn't gotten around to collecting things. You could try running this code 3 times to be absolutely sure that everything that can be collected has been collected:
GC.Collect();
GC.WaitForPendingFinalizers();
Just don't do that too often, as it is a blocking/expensive call, but it is useful to determine if something is actually still holding on or not.