空CALayer消耗多少内存?

时间:2012-11-05 22:44:20

标签: objective-c ios calayer

我使用[CALayer layer]创建了一个CALayer实例,并将其帧设置为屏幕的帧(例如,768×1024点)。我没有设置这个图层的内容。这个层会因为更大的尺寸占用额外的内存,还是内存消耗保持不变,因为它没有任何东西可以绘制?

3 个答案:

答案 0 :(得分:3)

CALayer基本上只是一些属性和方法。所以CALayer本身(几乎)不会花费内存。如果您将图像分配给当然然后的内容属性,这将花费您的图像在解压缩(CGImage)表单中使用的内存量。

(Afaik CALayer只存储对实际图像的引用,所以准确地说CALayer本身几乎没有内存使用)

要在运行时检查应用程序的内存使用情况,请使用(非常酷)分析工具:

  1. 构建分析
  2. 在运行中,选择个人资料
  3. 选择“内存使用情况”(或类似情况,我现在不会坐在我的MAC上)
  4. 点击左上角的红色“记录”按钮
  5. 享受

答案 1 :(得分:1)

我只是通过分配大量的空CALayer来度量它,看起来每个变量都占用大约340字节的内存。分配一些可笑的大帧甚至都不会改变它。

但是,图层可能会消耗大量内存,这不仅是因为图像内容,而且还因为它似乎是内部像素缓存。我尚未对此进行实验,但是可以肯定的是,即使形状或文本图层开始在屏幕上绘制,它们也不会那么小。

答案 2 :(得分:0)

如果需要,可以在创建图层之前和之后检查可用内存。 如果你想这样做,请检查:

Determining the available amount of RAM on an iOS device