【发布时间】:2012-04-18 10:17:44
【问题描述】:
我对 mmap() 如何与 iOS 或 OSX 上的框架一起工作有点困惑。
如果使用mmap() 将文件映射到虚拟内存并从中请求数据,则内核将数据分页到RAM。这实际上如何影响创建对象的方式?
如果通常使用alloc/init 创建对象,则分配内存块并启动对象。但是如果数据驻留在虚拟内存中,在mmap'ed 文件中怎么办? alloc 是否需要在对象上调用?为对象分配的内存是否被虚拟内存中的数据填充?还是跳过alloc 调用,只传递指向虚拟内存中数据的指针?
例如图像或声音文件,如果我知道文件在虚拟内存中的位置,我将如何设置对象?
如果分配数据,如果数据已经被分页到RAM中,它不会重复吗?
我在想,使用来自虚拟地址的内存将消除在堆上分配的需要。
【问题讨论】:
标签: objective-c cocoa memory-management mmap virtual-memory