Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you detect memory leaks on iPhone?

Tags:

I'm using the Leaks Instruments feature through Xcode to (try and) find memory leaks. I still haven't figured out how to use this program. I click Leaks in the program and see memory increasing as I do various things in the simulator. I have Extended Detail pane displayed. The only thing in Extended Detail pane that references my app is main. As in the main method produced by Xcode. Everything else is UIKit, Foundations, and other SDK classes I didn't write. What am I doing wrong that nothing is showing up from my app?

Before I hit 3 minutes, there are over 100 leaks totaling 2.5k. Is this common?

like image 327
4thSpace Avatar asked Jan 30 '09 02:01

4thSpace


People also ask

How do I find a memory leak on my Iphone?

To detect memory leaks you should run the app and navigate through all possible flows and open several times the same view controllers, then enter memory graph debugger and look at the memory heap. Look for objects that shouldn't be in memory, for example: A view controller that is no longer present in the app.

How memory leak happens in iOS?

A memory leak occurs when a given memory space cannot be recovered by the ARC (Automatic Reference Count) because it is unable to tell if this memory space is actually in use or not . One of the most common problems that generate memory leaks in iOS is retained cycles we will see it later.

How do you detect a memory leak?

The best approach to checking for the existence of a memory leak in your application is by looking at your RAM usage and investigating the total amount of memory been used versus the total amount available. Evidently, it is advisable to obtain snapshots of your memory's heap dump while in a production environment.


Video Answer


2 Answers

I've written up a Tutorial on using Instruments to track iPhone memory leaks. I'm not sure if it will help you with what you're dealing with or not...couldn't hurt, though. :-)

http://www.streamingcolour.com/blog/tutorials/tracking-iphone-memory-leaks/

like image 85
OwenGoss Avatar answered Sep 30 '22 02:09

OwenGoss


Change the view to "Extended Detail" on the instruments panel. This will show you the stack trace of each leaked object after you stop recording and select the leaked object.

You do see calls into the API, but what you are interested in is finding the last method of your application before the API calls, that is where the leak is.

A tip: turn on "gather memory contents" in the leaks view. Seeing the object values should also help finding where the problem is.

You don't want any leaks. 100 leaks is not typical (at least in my apps ;) Typical should be 0.

like image 37
lajos Avatar answered Sep 30 '22 01:09

lajos