Have you tried using Instruments to double check that it is memory?
On device the the iPod Touch 1G, 2G, iPhone 2G, 3G, all have 128 mb memory. (Call this Group 1)
The iPod Touch 3G, 4G and iPhone 3GS has 256 mb memory. (Group 2)
The iPhone 4 has 512 mb Memory. (Group 3)
All of the devices are Embedded Systems, meaning that the CPU and GPU share the same memory. However Group 1 is unique in that it has a specific amount of Video Memory reserved (24 mb), whereas the other two can free up RAM for VRAM and vice versa.
This makes it difficult to measure the true amount of memory available in Group 3 and Group 4, because it can be mixed between the two. iPhones generally have less free memory for you (they have to have the phone process running), and not all memory is available because much of it is used by Apple itself in handling the OS and any events and processes it needs to run.
On Group 1 devices you can get up to about 40 megs system memory before getting issues without getting any memory warnings.
If you get really close to the memory limit, it will warn you. If you blow past it by a couple megs in one allocation it’ll kick you out with the response you saw.
One Unity related event that I found that can get you in trouble with memory is GetPixels. Unity gives you the data in an array of Colors, which are 4 floats. There are many others as well, but a large Allocation is likely the culprit if it doesn’t warn you. Also if it takes more than 30 seconds to load it’ll kick you out like that as well.
Even if the information is in RGBA32 or ARGB4444, GetPixels() will return something that is 128 bits/pixel, which for a 1024x1024 sheet results in over 33 megs in a single array.
Otherwise I would suggest using Instruments with the Memory Monitor (Not Allocations, that’s unreliable) and see when and where the memory is being used.
Also for Managed memory with scripts you can use GC.GetTotalHeap multiple times and compare to determine (somewhat it’s unreliable especially with Coroutines because other things are being allocated) the size of classes once initialized.