栈大小
每个线程都有专用的栈空间 栈可以在线程存在期间自由使用
可被递归调用的最大方法数
fun1里调用fun2,fun2调用fun3 每个方法都有自己的栈帧 每个栈帧都会消耗一定字节的内存 消耗整体的栈空间
一个方法里最多可以使用的变量个数
视图层级中可以嵌入的最大视图深度
堆大小
每个进程的所有线程共享一个堆
与通过类创建的对象相关的所有数据都存放在堆中
UITableView 数据源是NSArray
数组中存储固定数量的内容 在用户滑动视图换入和换出
内存管理
- (NSString *)address0
{
NSString *result = [[NSString alloc] initWithFormat:@"log:%@ %@", self.city, self.state];
return result;
}
- (NSString *)address1
{
NSString *result = [NSString stringWithFormat:@"log:%@ %@", self.city, self.state];
return result;
}
- (NSString *)address2
{
NSString *result = [[[NSString alloc] initWithFormat:@"log:%@ %@", self.city, self.state] autorelease];
return result;
}
Autoreleasepool
int main(int argc, char * argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
@autoreleasepool {
//cdoe
@autoreleasepool {
//code
}
}
- (void)funWithAutoreleasepool
{
@autoreleasepool {
NSInteger count = 10;
for(NSInteger i = 0; i < count; i++)
{
@autoreleasepool {
//code
}
}
}
}
- (void)fun1
{
NSThread *myThred = [[NSThread alloc] initWithTarget:self selector:@selector(myThredStart:) object:nil];
[myThred start];
}
- (void)myThredStart:(id)obj
{
@autoreleasepool {
//code
}
}