【问题标题】:Virtual and Real memory in IOS appIOS应用程序中的虚拟和真实内存
【发布时间】:2012-06-08 21:55:40
【问题描述】:

我的应用程序在物理上(例如在硬盘上)占用的内存量与运行时占用的内存量是否有任何关系? 例如,我的 Background.caf 文件占用了 4.9 兆字节的磁盘空间,当在 iPhone 上运行时,是否正好为我的音乐分配了 4.9 兆字节的空间?同样,如果我的图形占用 20 兆字节的空间,iPhone 上用于存储和访问这些图形的内存量是否相当于 20 兆字节? 这很重要,因为我想知道我现在正在使用的文件的大小是否会对性能产生很大影响。谢谢!

【问题讨论】:

  • 您拥有不占用“RAM”的音频、图像、数据库等文件,除了暂时且通常不会同时占用所有文件。

标签: objective-c ios memory-management cocos2d-iphone


【解决方案1】:

我的应用程序在物理上(例如在硬盘上)占用的内存量与运行时占用的内存量有关系吗?

不,绝对不是。否则 Autodesk 很快就会倒闭!

在 iPhone 上运行时,是否正好为我的音乐分配了 4.9 兆字节?

不,音乐不会一次全部加载到内存中,它是以块、流或实时解压缩的形式发送的,但绝不会全部都存在于内存中。

同样,如果我的图形占用 20 兆字节空间,iPhone 上用于存储和访问这些图形的内存量是否相当于 20 兆字节

这取决于。 UIImages 按需加载并根据调用的方法进行缓存(例如,+imageNamed: 被缓存,+imageWithContentsOfFile: 没有),然而,PNG 资源占用的内存总是比文件大小略多,因为 Xcode 运行了一系列优化和压缩在它们被加载到包中之前。缓存图像确实会稍微增加整体内存占用,但是,它会导致更快的图像加载,因为 UIImage 不必再次在磁盘上查找它。

JPEG 图像再次改变了这一点,它具有著名的文件格式特定的有损压缩机制,允许它们在磁盘上小得多,但在内存中却很大。

【讨论】:

  • 太棒了!喜欢你的回答!谢谢!
【解决方案2】:

音频文件作为流加载,不会占用应用程序的20M内存 对于图像文件我不确定,但我仍然知道 ios 会缓存您使用应用程序加载的图像,因此我无法为您提供有关图像的确切信息

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2012-02-21
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多