У меня есть вопрос, касающийся управления памятью в target-c. Я читал различные документы Apple, касающиеся этого, но я все еще, кажется, не понимаю это. Я создал небольшой пример приложения, чтобы продемонстрировать свое замешательство. Когда я запускаю приложение Activity Monitor заявляет, что оно использует около 7 МБ. Когда я выполняю основной цикл, использование памяти увеличивается до 44 МБ, что ожидается. Однако, когда я освобождаю массив, в Activity Monitor я получаю только около 14 МБ. Приложение продолжает использовать около 30 МБ. Разве я не должен вернуть всю свою память, чтобы вернуть «Реальную память» на 7 МБ в Activity Monitor?
Что я делаю не так?
Заранее спасибо.
Вот приложение Легендат:
- (IBAction) buildArray:(id)sender {
values = [[NSMutableArray alloc] init]; // values is an instance variable of the appDelegate
for(int i = 0; i < 500000; ++i) {
NSString *tempString = [NSString stringWithFormat:@"New Object %i", i];
[values addObject:tempString];
}
[valuesTable reloadData]; // valuesTable is a NSTableView to diplay the array.
}
- (IBAction) clearMemory:(id)sender {
[values release];
[valuesTable reloadData];
}
- (int) numberOfRowsInTableView: (NSTableView *) tableView {
if (values) {
return [values count];
} else {
return 0;
}
}
- (id) tableView: (NSTableView *) tableView objectValueForTableColumn: (NSTableColumn *) tableColumn row: (int) row {
return [values objectAtIndex:row];
}