Ios 在vm_分配后释放内存

Ios 在vm_分配后释放内存,ios,virtual-memory,Ios,Virtual Memory,我想创建一个大的、连续的、部分驻留的地址空间区域 我正在使用vm\u allocate在iOS应用程序中分配一个大区域。iOS会自动为我找到一个适当大的连续未使用的地址空间区域,并给我一个指向该区域的指针,这很好 iOS会在我写的时候自动用物理内存页来支持它,所以我的应用程序的物理内存使用量从一开始就很小,并且随着时间的推移会随着需要而增长。到目前为止还不错 有时我会暂时停止使用这个内存区域的一部分。我的应用程序跟踪该区域的哪些部分在给定时间内实际使用,哪些没有使用。但是,我似乎无法确定将此信息

我想创建一个大的、连续的、部分驻留的地址空间区域

我正在使用
vm\u allocate
在iOS应用程序中分配一个大区域。iOS会自动为我找到一个适当大的连续未使用的地址空间区域,并给我一个指向该区域的指针,这很好

iOS会在我写的时候自动用物理内存页来支持它,所以我的应用程序的物理内存使用量从一开始就很小,并且随着时间的推移会随着需要而增长。到目前为止还不错

有时我会暂时停止使用这个内存区域的一部分。我的应用程序跟踪该区域的哪些部分在给定时间内实际使用,哪些没有使用。但是,我似乎无法确定将此信息传递给操作系统的方式,因此我永远无法缩减应用程序的物理内存使用量(例如,响应内存不足警告)

在其他不太神奇的环境中,此代码库保留一个连续的地址空间块,然后根据需要手动附加和分离物理页面

我是否遗漏了苹果公司的一些重要文档我是否可以使用类似的API来代替
vm\u allocate
;或者,是否有一种方法可以将
vm\u allocate
d地址空间的页面放回初始的“未初始化,下一次写入时自动映射”状态


我使用了这段代码来释放内存,效果很好。我知道这是一个非常晚的答案,我希望它会使用一些…

谢谢,但我不想释放地址空间。我希望保留地址空间区域,但将其中的一些(而不是全部)页面放回初始状态“不受真实内存支持,在下一次写入时自动映射”,即它们在最初的vm_分配调用后立即处于的状态。比较其他操作系统中可用的选项范围:
kern_return_t kr;
unsigned int nbytes = yourMemroySize;
unsigned int address  ; 

vm_deallocate(mach_task_self(),address, nbytes);