We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NSZone实际上是一个内存池,alloc或是dealloc这些操作都是在这个内存池中完成的。它不是一个对象,而是使用C结构体存储了关于对象的内存管理的信息。基本上开发者是不需要去理会这个东西的,
cocoa Application使用一个系统默认的NSZone来对应用的对象进行管理。
那么在什么时候我们会需要有一个自己控制的NSZone呢?当默认的NSZone里面管理了大量的对象的时候。这种时候,大量对象的释放可能会导致内存严重碎片化,cocoa本身有做过优化,每次alloc的时候会试图去填满内存的空隙,但是这样做的话时间的开销很大。这时候,我们可以自己创建一个NSZone,这样当你有大量的alloc请求的时候就全部转移到指定的NSZone里面去,减少了大量的时间开销。而且,使用NSZone还可以一口气把你创建的zone里面的东西都清除掉,省掉了大量的时间去一个个dealloc对象。总的来说,当你需要创建大量的对象的时候,使用NSZone还是能节省一些时间的,不过前提是你得知道怎么去用它。
allocWithZone不被Apple鼓励使用,基本上多数时候程序员也不需要自己去管理自己的zone
The text was updated successfully, but these errors were encountered:
No branches or pull requests
NSZone实际上是一个内存池,alloc或是dealloc这些操作都是在这个内存池中完成的。它不是一个对象,而是使用C结构体存储了关于对象的内存管理的信息。基本上开发者是不需要去理会这个东西的,
cocoa Application使用一个系统默认的NSZone来对应用的对象进行管理。
那么在什么时候我们会需要有一个自己控制的NSZone呢?当默认的NSZone里面管理了大量的对象的时候。这种时候,大量对象的释放可能会导致内存严重碎片化,cocoa本身有做过优化,每次alloc的时候会试图去填满内存的空隙,但是这样做的话时间的开销很大。这时候,我们可以自己创建一个NSZone,这样当你有大量的alloc请求的时候就全部转移到指定的NSZone里面去,减少了大量的时间开销。而且,使用NSZone还可以一口气把你创建的zone里面的东西都清除掉,省掉了大量的时间去一个个dealloc对象。总的来说,当你需要创建大量的对象的时候,使用NSZone还是能节省一些时间的,不过前提是你得知道怎么去用它。
allocWithZone不被Apple鼓励使用,基本上多数时候程序员也不需要自己去管理自己的zone
The text was updated successfully, but these errors were encountered: