Я пытаюсь понять вещи управления памятью в Objective-C.
Если я вижу использование памяти в списке Activity Monitor, похоже, что память не освобождается (я имею в виду столбец rsize) Но в «Распределении объектов» все выглядит хорошо.
Вот мой простой код:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSInteger i, k=10000;
while (k>0) {
NSMutableArray *array = [[NSMutableArray alloc]init];
for (i=0;i<1000*k; i++) {
NSString *srtring = [[NSString alloc] initWithString:@"string...."];
[array addObject:srtring];
[srtring release];
srtring = nil;
}
[array release];
array = nil;
k-=500;
}
[NSThread sleepForTimeInterval:5];
[pool release];
return 0;
}
Что касается сохранения и выпуска, это круто, все сбалансировано.
Но rsize уменьшается только после выхода из этой маленькой программы.
Можно ли как-то "очистить" память перед выходом?