【问题标题】:iPhone App has large memory footprint on startupiPhone App 在启动时占用大量内存
【发布时间】:2011-09-19 17:48:27
【问题描述】:

如果我在 main 函数的第一行代码上设置断点,我会在活动监视器中看到我的应用程序有 17MB 的内存。你知道为什么在没有加载任何东西的情况下内存使用率如此之高吗? (也许操作系统正在加载很多东西,但不是我)

此内存使用量与应用程序可执行文件的大小几乎相同。启动时可执行文件是否已完全加载?
如何减少初始内存大小?

【问题讨论】:

    标签: iphone ios memory-management


    【解决方案1】:

    不要查看活动监视器,使用 Instruments(配置文件、分配)。

    【讨论】:

      【解决方案2】:

      我认为它与您的 app bundle 大小相同的事实可能只是巧合,因为整个 bundle 在启动时并未加载到内存中。

      正如 CocoaFu 所说,使用分配工具查看您的应用分配了多少内存。它将比活动监视器工具小得多,因为它不包括 OpenGL 使用的内存(它支持所有用户界面元素)。

      很可能,您的实际分配非常小(1 MB 或更少),而其他 16 MB 左右是由 UIKit 创建的应用程序的所有界面元素(即您的导航控制器、各种视图控制器、按钮、任何)。请注意,在 iPhone 4 或 iPod touch 第 4 代上,OpenGL 分配(即分配工具和活动监视器工具之间的差异)将大约是早期型号的 2 到 4 倍,因为屏幕的分辨率是 4 倍,所以所有 UI 元素都更大。

      【讨论】:

      • 我的 app bundle 有 400MB。我的可执行文件有 17MB,代码和数据共享相同的内存。也许活动监视器是正确的......
      • 啊,我看错了。我以为你说的是​​应用程序包。我想它可能确实将整个可执行文件加载到内存中。这是一个非常庞大的可执行文件,请问它是什么类型的应用程序?
      • 另外,根据分配工具,我很好奇您使用了多少内存。
      • 这是一个游戏。我不能使用分配工具。每次使用时应用都会崩溃。
      • 是用真机的时候吗?如果是这样,请在使用模拟器时尝试,因为您将拥有 Mac 的全部功能。无论如何,我认为减少占用空间的唯一方法是减少二进制文件的大小。任何想法为什么二进制文件如此之大?相比之下,我相当复杂的音乐流媒体应用程序的二进制文件包含许多 3rd 方库和数百个类,只有 5.7 MB。
      猜你喜欢
      • 1970-01-01
      • 2011-02-17
      • 2012-06-19
      • 2012-12-23
      • 2014-05-11
      • 2011-02-27
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多