【问题标题】:How much memory does an empty CALayer consume?一个空的 CALayer 消耗多少内存?
【发布时间】:2012-10-25 20:23:49
【问题描述】:

我使用[CALayer layer] 创建了一个 CALayer 实例,并将其框架设置为屏幕框架(例如 768 x 1024 点)。我没有设置这一层的内容。该层会因为更大的尺寸而占用额外的内存,还是因为没有可绘制的内容而导致内存消耗保持不变?

【问题讨论】:

  • 我将把它作为评论发布,因为我还没有验证它,但任何视图(或层)的实际重项目是它的 backing store,它是在要求。它基本上是图层中所有像素的位图,所以如果您还没有绘制或使用图层,我假设您所拥有的只是几个字节的元数据。这就是 iOS 6 中新视图系统的工作方式。而不是 viewDidUnload,后备存储被简单地清除,同时保持视图变量和属性不变。

标签: objective-c ios calayer


【解决方案1】:

一个 CALayer 基本上只是几个属性和方法。所以 CALayer 本身(几乎)不消耗内存。如果您将图像分配给内容属性当然那么这将消耗您的图像以解压缩(CGImage)形式使用的内存量。

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

要在运行时检查应用程序的内存使用情况,请使用(非常酷的)Profiling-Tool:

  1. 为分析构建
  2. 在运行中,选择配置文件
  3. 选择“内存使用情况”(或类似的,我现在不坐在我的 MAC 前)
  4. 点击左上角的红色“记录”按钮

享受

【讨论】:

    【解决方案2】:

    我刚刚通过分配大量空的CALayer来测量它,看起来每个占用大约340字节的内存。分配一些可笑的大帧并不会改变它。

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

    【讨论】:

      【解决方案3】:

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

      Determining the available amount of RAM on an iOS device

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 2013-06-13
        相关资源
        最近更新 更多