我遇到了一个应用程序问题,每次推送到特定视图时内存都会继续增长。重新创建内存增加的过程是:
每次我推到家庭视图控制器(即使我已经确认前一个被取消分配),内存会跳起6+ mb。我分析了应用程序,并看到了VM的一个明显问题:Allocations中的ImageIO_PNG_Data和VM:CoreAnimation类别。
其中一些发生在我使用的类Masking View中,它在该视图下方绘制一个图层的指定部分。用于绘制的代码如下:
//Draw project image
CGRect newRect = self.frame;
if (useCustomFrame){
newRect = customFrame;
}
CGImageRef image = CGImageCreateWithImageInRect([self.projectedImage CGImage], newRect);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, rect, image);
// Release Context
CGImageRelease(image);
答案 0 :(得分:2)
大多数时候,记忆问题日益严重,原因有两种:
1.检查您在代码中使用的图像分辨率,仅使用所需的图像分辨率。
假设您使用40x40图像尺寸1X,80x80 2x等等。 然后只使用所需的分辨率。
使用内存分配工具并检查虚拟机分配,如果您有任何有关问题的IMAGEIO,那么您可能会在NSMainBundle中包含高分辨率图像。
以所需分辨率调整高分辨率图像的大小,并使用imageWithContentsOfFile而不是imageName。