我的应用程序在物理上占用的内存量(例如在硬盘驱动器上)是否与运行时占用的内存量有任何关系?例如,我的 Background.caf 文件占用了 4.9 兆字节的磁盘空间,当在 iPhone 上运行时,是否正好为我的音乐分配了 4.9 兆字节的空间?同样,如果我的图形占用 20 兆字节的空间,iPhone 上用于存储和访问这些图形的内存量是否相当于 20 兆字节?这很重要,因为我想知道我现在正在使用的文件的大小是否会对性能产生很大影响。谢谢!
问问题
376 次
2 回答
3
我的应用程序在物理上占用的内存量(例如在硬盘驱动器上)是否与运行时占用的内存量有任何关系?
不,绝对不是。否则 Autodesk 很快就会倒闭!
在 iPhone 上运行时,是否为我的音乐分配了 4.9 兆字节?
不,音乐不会一次全部加载到内存中,它是以块、流或实时解压缩的形式发送的,但绝不会全部存在于内存中。
同样,如果我的图形占用 20 兆字节空间,iPhone 上用于存储和访问这些图形的内存量是否相当于 20 兆字节?
这取决于。UIImage 按需加载并根据调用的方法进行缓存(例如+imageNamed:
是否缓存+imageWithContentsOfFile:
),然而,PNG 资源占用的内存总是比它们的文件大小略多,因为 Xcode 在将它们加载到捆。缓存图像确实会稍微增加整体内存占用,但是,它会导致更快的图像加载,因为 UIImage 不必再次在磁盘上查找它。
JPEG 图像再次改变了这种情况,它具有著名的文件格式特定的有损压缩机制,允许它们在磁盘上小得多,但在内存中却很大。
于 2012-06-04T22:09:41.347 回答
0
音频文件作为流加载,它们不会占用应用程序的 20M 内存对于图像文件不确定,但我仍然知道 ios 会缓存您使用应用程序加载的图像,因此我无法为您提供有关的确切信息图像
于 2012-06-04T20:30:07.903 回答