最近,我在应用程序中遇到了一些内存管理问题。
该应用程序利用一些高质量的图像,这极大地增加了内存的使用。
以下是一些关于该项目和图片细节的信息,以使问题更加清楚:
但这里有个问题:
当我使用仪器跟踪内存使用情况时,我看到应用程序的内存使用率非常高。以下是不同情况下内存分配的统计数据:
知道为什么分配的内存比图像的总大小要高得多吗?
发布于 2012-09-21 12:21:33
这可能是因为您使用的图像是用png或jpg压缩的,并且解码到内存时比原始文件大小要大得多。它将占用像宽度*高度*4字节的内存,不管图像内容如何。
发布于 2012-09-21 12:58:30
首先,不要对符合任何条件的图像使用-[UIImage imageNamed:]:
但是,您需要注意这些更改如何影响您的程序。您目前在任何可能的情况下都依赖内存。我的建议是将其中一些责任转移到其他领域。分配负载,使它仍然感觉很快,但有一个更好的资源平衡。一旦您使用较少的缓存,您将注意到,您可能最终会读取和展开一些文件不止一次。然后尝试找出您应该在何处共享加载的图像。当然,只装载你需要的东西。然后把你学到的东西拿出来,然后把它应用到你的其他图像中。
另外,把你的图像分解--你的图像要比显示器的大小大几倍。如果它们需要这样的大小,那么将它们分解--如果它们只在出现时被缩小,那么在分发之前调整它们的大小(例如,它们不需要缩放-它将更快地显示,看起来更好,并且消耗更少的内存)。
https://stackoverflow.com/questions/12530199
复制相似问题