Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test memory low condition on real iphone/ipad device (not simulator)?

I know that there is a "Simulate Memory Warning" on the simulator. However, many people said that the app should be test on real device. How can I test the memory low condition on real device? Running as many apps as possible in background? Any better way?

Thanks.

like image 394
arsuetsuet Avatar asked Nov 17 '10 02:11

arsuetsuet


3 Answers

You can use private API to send low memory message:

[[UIApplication sharedApplication] _performMemoryWarning];

Though remember to remove from release otherwise your app might get rejected ;)

Kudos goes to: http://forum.148apps.com/showpost.php?p=8603&postcount=3

like image 50
xvga Avatar answered Nov 20 '22 06:11

xvga


The previous answer doesn't compile on my machine. The workaround is to call performSelector:, like this:

[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
like image 41
matt Avatar answered Nov 20 '22 08:11

matt


There are a few tricks you can try:

Put some NSLog statements in your low memory delegate calls to see if your app is getting stress tested in normal use.

If not:

Prior to running your app, start several large slow web sites downloading in Safari; then while testing your app, send some large emails to a push account on your test device.

For stress testing purpose (use a preprocessor define that is NOT in your distribution build), malloc an extra 10 or 20 or some-test-number megabytes that your app doesn't need, write into it some junk/rand() data to dirty the pages, and don't release it (you can purposely leak 25MB for max stress).

You can also create your own test background app, say a music player that plays silence, put it in the background before testing your app, and have the background audio callback allocate and dirty some large chunks of data.

like image 1
hotpaw2 Avatar answered Nov 20 '22 07:11

hotpaw2