我有一个保留/发布项目,它有一个简单的算法。我从一个 100000 个对象的可变数组开始,每隔 5 秒我在开始时删除 1000 个对象并在最后添加 1000 个对象。从理论上讲,我的内存占用应该在 Lil 延迟后保持不变,但是它会持续上升,直到达到一定数量。但是用“[array removeAllObjects]”删除它的所有对象并释放数组并不会回收所有内存,只是一部分。我在发布方案中运行,没有调试器,并使用活动监视器来跟踪内存使用情况。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
array = [[NSMutableArray alloc] init];
for(int i = 0; i<100000; i++){
NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];
[array addObject:url];
}
self.t = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(addAndRemove:) userInfo:nil repeats:YES];
}
-(IBAction)addAndRemove:(id)sender{
[array removeObjectsInRange:NSMakeRange(0, 1000)];
for(int i = 0; i<1000; i++){
NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];
[array addObject:url];
}
}
-(IBAction)clear:(id)sender {
[array removeAllObjects];
[array release];
[t invalidate];
t = nil;
}