IOS应用程序中的虚拟和真实内存

时间:2012-06-04 20:26:39

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

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

2 个答案:

答案 0 :(得分:3)

  

我的应用程序在硬盘驱动器上物理占用的内存量是否与运行时占用的内存量有任何关系?

不,绝对没有。否则,Autodesk很快就会破产!

  

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

不,音乐不是一次性加载到内存中,而是以块,流或实时解压缩的方式发送,但永远不会存在于内存中。

  

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

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

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

答案 1 :(得分:0)

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