But my app is taking a max of 2.75MB (highest peak shown in INSTRUMENTS)...
I read that around 24MB is available as heap space...
Is the above method(AppRecievedMemoryWarning) get called at those lines, where alloc /copy occurs??
How long is your app running before it gets the memory warning? Does Instruments say you still have leaks? Is Instruments collecting data throughout the life of the program (I had a weird case where Instruments would stop collecting data after my app's initialization phase). Could you possibly take a screenshot of Instruments when the memory warning happens?
Also, the "peak" memory may be a misleading thing to look at. Take for example Instruments running my app.
Note how the peak is less than total memory consumed over the life of the application. It's possible you have a thread that Instruments isn't measuring so any leaks in that thread are going undetected and thus causing the low memory warning. If that overall bytes column is continuously growing (even after initialization has completed) and you're not doing anything in the application - then I think that's a telltale sign you have a leak somewhere. I'd be curious to know what the overall bytes value is when you receive the low memory warning.