我想创建一个大的,连续的,部分驻留的地址空间区域。
我使用vm_allocate
在我的iOS应用中分配了一个大区域。 iOS会自动为我找到一个适当大的连续未使用的地址空间区域,并递给我一个指针,这很好。
偶尔我会停止使用此内存区域的某些部分。我的应用程序跟踪该区域的哪些部分在给定时间实际使用,哪些不是。但是,我似乎无法确定将此信息传递给操作系统的方法,因此我永远无法缩小应用程序的物理内存使用量(例如,响应内存不足警告)。
在其他不太神奇的环境中,此代码库会保留一个连续的地址空间块,然后根据需要手动附加和分离物理页面。
我错过了一些重要的Apple文档吗? - 我是否可以使用类似的API代替vm_allocate
来实现此目的;或者,有没有办法可以将vm_allocate
d地址空间的页面放回到它们的初始状态"未初始化,自动映射到下一次写入"状态?
答案 0 :(得分:0)
kern_return_t kr;
unsigned int nbytes = yourMemroySize;
unsigned int address ;
vm_deallocate(mach_task_self(),address, nbytes);
我已经使用这段代码释放内存它运行正常。我知道这是非常晚的答案,我希望它会使用一些......