【问题标题】:Memory getting released in iOS simulator but on device (ipad )its not getting released内存在 iOS 模拟器中被释放,但在设备(ipad)上它没有被释放
【发布时间】:2014-02-13 06:44:34
【问题描述】:

每当我在模拟器上测试应用程序时,内存会上升到 400mb,但有时会根据需要释放(即分配的内存达到 20mb)。但在 iPad 上测试相同的代码时,它只释放 50mb(即分配的内存达到 350mb)。知道为什么模拟器和设备中的内存释放存在这种差异吗?

NB我正在使用 xcode 5.0 (5A1413) 并且应用程序针对 iOS 7

【问题讨论】:

  • 尽量让你的问题更具体。
  • @geminiCoder 是的,我正在使用 ARC,
  • @KudoCC 我只是想知道内存是否在模拟器上而不是在我的设备上被正确释放,我的编码是否有问题?
  • 我建议在 Xcode 中使用“配置文件”来查看应用程序的内存。
  • @KudoCC 是的,它尝试使用“配置文件”但情况相同

标签: ios iphone memory-management ios7 memory-leaks


【解决方案1】:

这是因为模拟器不是模拟器

模拟器不模拟 iPad/iPhone/iOS 的行为,它只是模拟 iOS 应用程序的执行,而且您当然不应该期望模拟器的内存管理代表您将在设备上看到的内容。

模拟器获得你的 Mac 所能提供的尽可能多的 RAM。

【讨论】:

  • 好的,那么在 iOS 模拟器和 iOS 设备之间,dealloc/ 对象释放机制也会有所不同吗?
  • 是的,可能,当您在模拟器上调用 dealloc 时,它可能不会使用与 iOS 相同的范例来物理释放内存 - 如果我的回答解决了您的问题,请标记为已回答。
  • 这是否意味着我必须改变我释放对象的方式,即使它在模拟器中正确释放?
  • @rhlnair,不,您不应该编写最适合模拟器的代码,而是最适合设备的代码。在您的目标设备上进行测试。您正在使用 ARC,因此您不必手动释放对象。保留/释放调用将自动透明地插入您的代码中。您是在说整理对象以响应内存不足警告吗?
猜你喜欢
  • 2012-11-02
  • 2018-08-27
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2013-06-24
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多