【发布时间】:2012-02-06 09:01:48
【问题描述】:
我正在开发一个 iOS 应用程序,该应用程序将创建许多小对象和浮点数,并试图了解它消耗了多少内存。
当我运行“Allocations”工具时,它说我有大约 2MB 的“Live Bytes”,当我在应用程序中移动时,这个数字大致保持不变(当应用程序繁忙时,这个数字会达到 3MB 左右,但是然后回落到 2MB)。
但是当我运行“Activity Monitory”工具时,我的应用程序的“真实内存”在完成启动后为 25MB,并且每当在我的 CALayer 中发生绘图时都会迅速增长。不到一分钟,它就超过了 100MB。
为什么“Live Bytes”会显示 2MB,而“Real Memory”会显示 100MB?
我的 CALayer 正在绘制 吨 条路径,它将 CPU 固定在 100% 几秒钟以完成一次绘制操作,并将所有这些点从 NSData 对象加载到CGPoint 值,然后再次释放它们(NSData 对象是正在绘制的点的压缩版本,存储从一个点到下一个点的增量,所以我将它保存在 RAM 中,但不保留实际的 CGPoints)。
它还将绘制的结果缓存在 UIImage 中,并保存在一个不会增长到超过 500KB 的先进先出数组中。
【问题讨论】:
标签: objective-c ios memory-leaks instruments