I'm sorry in advance as maybe this is a dumb and noob question...
I'm using SDWebImage to display pictures in a UITableView in my cellForRowAtIndexPath method, using the classic
[cell.pointPicture setImageWithURL:[NSURL URLWithString:thePoint.imageURL] placeholderImage:[UIImage imageNamed:POINT_DEFAULT_IMAGE]];
(the displayed pictures are light and well compressed jpgs, just some ko, and yes I'm using dequeueReusableCellWithIdentifier of course).
When I inspect my app with "Instrument - Allocations", and just scroll down my UITableView (with 40 cells containing picture, a bit like Instagram), I got a huge amount of memory used ! (see screenshot)
But it seems to be "VM", and especially "VM: CG raster data" from the coreGraphics library.
So the questions are :
I'm sorry but after few search on the web I can't find any relevant information concerning the "VM: CG raster data"... Any idea? Thanks in advance !
I experienced the same issue and found the root cause, at least in my implementation.
Root Cause
The root cause was that my table cell stored a strong pointer to the image which is stored in SDWebImage cache. This strong pointer, caused the memory release function of SDWebImage removeAllObjects
not to release any memory when receiving a memory warning from iOS.
Solution 1 - Keep weak
pointers from within your ViewController and allow only SDWebImage to keep a strong pointer to all UIImage
objects.
Solution 2 - Implement - (void)prepareForReuse
and set the image pointers to nil
To test this solution run your application and simulate a memory warning - You will be able to see the data removed
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With