【问题标题】:Simple iPhone app uses too much memory (4MB)简单的 iPhone 应用程序占用太多内存 (4MB)
【发布时间】:2011-08-29 22:16:12
【问题描述】:

感谢您的宝贵时间 我正在使用:

  • XCode 4.0 Build 4A304a
  • IOS 4.3.1
  • 在 iPhone 4 上运行

我刚刚使用导航模板创建了一个项目。 该应用程序什么都不做,表格只有一行,当您点击这一行时,它会检查应用程序使用了多少内存并将结果写入detailTextLabel。 这个应用程序使用 4MB。这正常吗?

这是我用来获取内存信息的代码:

- (float) reportUsedMemoryInBytes {

    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                               TASK_BASIC_INFO,
                               (task_info_t)&info,
                               &size);
    if( kerr == KERN_SUCCESS ) {
        return info.resident_size;
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
        return -1.0;
    }
}

标签被填满了

cell.detailTextLabel.text = [NSString stringWithFormat:@"%.2f Mb", 
                             [self reportUsedMemoryInBytes] / 1024.0 / 1024.0];

当使用带有内存监视器的 Instrument 时,如果我向下滚动,我会看到名为 MemTest 的进程。

  1. 在 Real Memory 列中保持 4.58 Mb
  2. 在虚拟内存列中保持 75.78 Mb

但是,如果我使用 Allocations 并检查第一行 all Allocations 那么

  1. 在 Live Bytes 列中保持 631.51 Kb
  2. 在总字节数列中保持 1.26 Mb

这个简单的应用程序现在使用的正确内存量是多少? 我只想知道我的应用程序使用了多少内存,而不知道框架和 IOS 库使用的东西。

感谢每个机构的帮助。

【问题讨论】:

  • 您可能希望为此使用 Instruments。
  • 我认为您的意思是 MiB(兆字节,2^20 字节),而不是 MB(兆字节,10^6 字节),绝对不是 Mb(兆比特,10^6 位)。

标签: ios


【解决方案1】:

UIKitFoundation 最有可能占了该大小的大部分。报告的 RSS 可能包括诸如此类的共享库/框架。有关这一点的讨论,请参阅"Understanding Memory Usage on Linux"

为什么 ps 是“错误的”

根据您的看法,ps 不会报告进程的实际内存使用情况。它真正做的是显示如果每个进程是唯一运行的进程,它会占用多少实际内存。当然,一台典型的 Linux 机器在任何给定时间都有几十个进程在运行,这意味着 ps 报告的 VSZ 和 RSS 数字几乎肯定是“错误的”。为了理解其中的原因,有必要了解 Linux 如何处理程序中的共享库。

Linux 上的大多数主要程序都使用共享库来促进某些功能。例如,一个 KDE 文本编辑程序将使用几个 KDE 共享库(允许与其他 KDE 组件交互)、几个 X 库(允许它显示图像和复制和粘贴)和几个通用系统库(允许它执行基本操作)。许多这些共享库,尤其是像 libc 这样常用的库,被 Linux 系统上运行的许多程序使用。由于这种共享,Linux 能够使用一个绝妙的技巧:它将共享库的单个副本加载到内存中,并为每个引用它的程序使用该副本。

【讨论】:

    猜你喜欢
    • 2017-09-01
    • 2011-09-20
    • 2011-02-17
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多