objective-c - IOS应用程序中的虚拟和实际内存

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

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

最佳答案

Does the amount of memory that my app take up physically, as in, on a hard drive, have any relationship to the amount of memory it takes up when running?

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

when being run on the iPhone, is exactly 4.9 megabytes being allocated for my music?

不,音乐不会一次性全部加载到内存中,它会以 block 、流的形式发送或实时解压缩,但永远不会将整个内容都显示在内存中。

Similarly, if my graphics take up 20 megabytes of space, will the amount of memory on the iPhone, being used to store and access these graphics be equivalent to 20 megabytes

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

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

关于objective-c - IOS应用程序中的虚拟和实际内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887869/

相关文章:

ios - UITextView 末尾的额外空间

ios - Swift:将pdf文件读入pdf应用程序阅读器

objective-c - ARC 中的 "Fire and forget"类

iOS 8 : Where can I find a complete change log of iOS 8 compared with iOS 7?

ios - 创建文件到应用程序文档文件夹

c++ - 从 C++ 中的 char* 中释放数据

memory-management - 在程序集中访问 malloc 内存

c++ - 在没有 `new` 关键字的情况下实例化一个类会导致在堆栈或堆上创建其内部变量吗?

基于 iPhone View 的应用程序没有核心数据?

objective-c - 生成不重复的随机数