it seems that bitmap images attached as background drawables are never released. In order to re-create the problem just create a default Mono for Android project and add the line
to the outer LinearLayout. Also add a wallpaper.png image (make it large to quickly see the problem, e.g. 1280x1024 pixels) to the resources drawable folder. Then start the application.
When turning the orientation of the device (portrait/landscape) the activity is re-created with every turn. Turning the device several times (about 7 times with a 1280x1024 image) causes an exception because we are already running out of memory.
To verify the problem I also created a Java Android default application and made the very same changes to it, using the very same image. Needless to say, the real Android application does never exhaust its memory.
I assume that Mono for Android somewhere keeps a persistent internal reference to every Activity that is ever created and never releases it. Thus all resources attached to an Activity are never released, too.
I even trimmed down the default application to just
If that doesn't help, please let me know how I can improve that.
In your specific case, the problem is that Mono for Android's GC hasn't executed, so after you rotate the screen a few times none of the previously created Activities have been collected, and all the Java-side memory won't be freed until the Mono for Android objects are collected.
The fix is to cause a GC by overriding Activity.OnDestroy():