PDA

View Full Version : [Resolved] Why is my app taking up so much memory (>12MB)?




stephenbenedict
Mar 11, 2012, 09:28 PM
My app consists of an UIImageView that can hold an image from the photo library and some overlay controls for applying B&W, sepia, and enhance image effects using the NYXImagesKit library. When I select an image from the photo library I display it on the UIImageView and save the photo as a PNG image file to the app's Documents directory for persistence. Whenever I apply an effect to the image, I write that image with the effect applied as an additional PNG file (alongside the original) to the Documents directory. My problem is that when I click the controls to apply the image filters, the app uses lots of memory (above 12MB) and eventually crashes.

The app is built using ARC so theoretically memory leaks should be fairly well taken care of, so I'm guessing it's my actual way of adding effects that's inefficient and eating up resources. If any of you are seasoned programmers, could you take a look at my code and point out what's causing the huge memory usage? If you could that would be absolutely wonderful.

Instructions for the app: double-tap to reveal the overlay image effects controls and tap once to hide them.



stephenbenedict
Mar 17, 2012, 09:15 PM
In my original code, I applied image effects using the library NYXImagesKit (https://github.com/Nyx0uf/NYXImagesKit) and then saved those modified images as PNG files into my app's Documents directory using:

[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];

I was making these file writes fairly frequently, so I tried switching the file saving method to the one supplied in NYXImagesKit:

[image saveToPath:path type:NYXImageTypePNG backgroundFillColor:nil];

Though still not instant, this change cut down on memory usage and speeded things up sufficiently so that after adding an activity indicator during image processing, the app's responsiveness was satisfactory.