3

在使用 CALayer 渲染开发 Mac OSX 应用程序时,我们发现 Apple 官方示例代码 'CALayerEssentials' 可能会导致装有 OSX 10.7.4 的新 MacBook Pro(2012 年中 15' Retina)上的内存泄漏。

内存泄漏一般描述:

  1. 使用 Xcode 运行“CALayerEssentials”项目;(你可以在 Xcode Organizer -> OS X 10.7 Core Library -> Graphics & Animation -> Animation -> CALayerEssentials 下找到这个项目)
  2. 打开 Instruments Leaks 模板,并附加到 CALayerEssentials 进程 ID;
  3. 开始记录,Leaks 会提示大约每 10 秒发生一次内存泄漏;
  4. 在 Leaks Object 面板中,有一个项目 'Malloc 48 Bytes' 随着计数和内存大小的增加;
  5. 大约 15 分钟后,泄漏大小将增加到大约 2.48 MB;
  6. 大约 78 分钟后,泄漏大小将增加到大约 23.54 MB;
  7. 通过检查 vmmap 结果地址区域中的泄漏地址,表明所有地址都与 QuartzCore_0x6bb2a800 有关,如下行:

MALLOC_OTHER 086af000-086d1000 [ 136K] rw-/rwx SM=COW QuartzCore_0x6bb2a800

这是运行 CALayerEssentials 并监控其内存泄漏的屏幕截图:http: //smartsweetie.com/uploads/screenshot1.png

这是内存泄漏机器系统配置:

  • 机器:MacBook Pro(2012 年中,15' Retina)
  • 处理器:2.3 GHz 英特尔
  • 酷睿 i7 内存:8 GB 1600 MHz DDR3
  • 显卡:NVIDIA GeForce GT 650M 1024 MB
  • 软件:Mac OS X Lion 10.7.4 (11E2620)

但是,在其他机器上运行相同的 CALayerEssentials 不会有 CALayer 内存泄漏问题。

  • 机器:MacBook Pro(2011 年末,15')
  • 处理器:2.2 GHz 英特尔酷睿 i7
  • 内存:4 GB 1333 MHz DDR3
  • 显卡:AMD Radeon HD 6750M 512 MB
  • 软件:Mac OS X Lion 10.7.4 (11E53)

装有 OS X 10.7.4 的新 MacBook Pro 上的 CALayer 内存泄漏是否存在任何已知问题?或者有什么建议可以进一步调查这个问题?

4

0 回答 0