Memory iPad收到内存使用不足的内存警告

Memory iPad收到内存使用不足的内存警告,memory,memory-management,uiwebview,ipad,Memory,Memory Management,Uiwebview,Ipad,我有一个带有HTML的UIWebKit,这个HTML有几个图像和文本,但是仅仅显示它就会给我内存警告。所以我做了一些测试: 相同的HTML包含不同的图像,完整大小,在相同的图像之后,但从原始大小减少了50%,对于减少了50%的图像,我去预览并将所有图像减少了50% 令人惊讶的是50%的测试,您可以看到,即使有16个图像,内存峰值也为4.90MB。这真令人惊讶。 请注意,这些值并不总是相同的,它们会发生变化,但测试之间没有太大的差异 在50%问题中,在8和16幅图像中,虽然内存不足,但有时会出现内

我有一个带有HTML的UIWebKit,这个HTML有几个图像和文本,但是仅仅显示它就会给我内存警告。所以我做了一些测试: 相同的HTML包含不同的图像,完整大小,在相同的图像之后,但从原始大小减少了50%,对于减少了50%的图像,我去预览并将所有图像减少了50%

令人惊讶的是50%的测试,您可以看到,即使有16个图像,内存峰值也为4.90MB。这真令人惊讶。 请注意,这些值并不总是相同的,它们会发生变化,但测试之间没有太大的差异

在50%问题中,在8和16幅图像中,虽然内存不足,但有时会出现内存警告,但与全尺寸图像相比,性能提升是明显的

静止=滚动所有文章后的内存

1图像=[静止5MB][旋转5.6MB]

2幅图像=[静止6.99MB][旋转7.7MB]

3幅图像=[静止9.04MB][旋转10.9MB]

4幅图像=[静止10.89MB][旋转13.20MB]

8幅图像=[静止23.14MB][旋转25.20MB](有时会崩溃)

16个图像=[静止27.14MB,应用程序崩溃]

50%

1图像=[静止3.2MB][旋转3.67MB]

2图像=[静止3.2MB][旋转3.70MB]

3图像=[静止3.3MB][旋转3.79MB]

4图像=[静止3.3MB][旋转3.80MB]

8幅图像=[静止4.29MB][旋转4,63MB](有时会崩溃)

16幅图像=[静止4.79MB][旋转490MB](有时会崩溃)

我的问题是:这个应用程序有时会因为16张小图片而崩溃。为什么?记忆要低得多

内存使用的限制是什么?最大值似乎与50%大小的图像不同。13.2MB适用于大图像,3.8适用于小图像。任何更高的东西有时都会崩溃。这毫无意义


谢谢

如果你发布了一个崩溃日志来记录正在发生的事情,那会很有帮助,因为崩溃很可能与你的内存消耗无关,而与你如何处理内存有关。是的,您的图像大小可能就是问题的症结所在,因为每个图像使用的实际内存量是根据以下公式确定的:

w * h * 4
当然,假设图像是32位彩色图像,其中
w
是以像素为单位的图像宽度,
h
是以像素为单位的图像高度。因此,1024x1024 32位彩色图像将使用大约4.2 MB的内存,而512x512 32位彩色图像将使用1兆

你的事故报告会告诉我们的。此外,在object allocations and leaks(对象分配和泄漏)工具下的工具中运行可能会有巨大的洞察力(在侧窗格可见的情况下运行,它将显示找到的任何泄漏的调用堆栈)。还要注意的是,如果您确实发现了指向CIOImage之类的东西的泄漏,这可能是泄漏最终发生的地方,但泄漏发生的地方几乎肯定在您的代码中


此外,在运行仪器时,请记住运行连接到设备上运行的应用程序的仪器;在这种情况下,不要把sim卡所说的话当真。

计算图像的未压缩大小是正确的(我会使用公式(w*h)B,其中“B”是每像素字节(不是位)。这很可能是他的问题。我是在计算字节而不是位。32位4字节。对不起,我知道你在用字节。我只是想让OP更清楚,因为当大多数人谈论图像时,他们指的是“每像素位”。