코드 공개하지 : for 루프에서에서NSKeyedArchiver archivedDataWithRootObject : 메모리 useage이 같은
NSMutableData *data = [NSMutableData dataWithLength:10*1024*1024];
for (int i = 0; i < 10; i++) {
NSData* archiveData = [NSKeyedArchiver archivedDataWithRootObject:data];
NSLog(@"%lu", (unsigned long)[archiveData length]);
}
설정 브레이크 포인트를, 그것은 메모리 useage이 증가 볼 것 같은 : 10메가바이트 -> 20메가바이트 ....-> 100MB, for 루프 밖에서도 여전히 메모리를 해제하지 않습니다.
프로세스를 계속할 때 (다음 메인 루프로 갈 수 있음)에만 메모리 사용량이 100MB 감소합니다.
PS : ARC 켜기/ARC 끄기 및 키워드 사용 해제는 동일한 결과입니다.
나는''@ autoreleasepool'''을 추가하려고하는데, 즉시 메모리를 해제하지 않습니다. 내 문제는 for 루프의 메모리 사용량이 너무 많습니다. for 루프를위한 코드를 추가하려고합니다.''dispatch_async ''', 그것은 작동하지만 나는이 해결책을 좋아하지 않는다. – waitianlou
루프에 따라 달라집니다. 당신이 준 예제는'archivedDataWithRootObject'가 요청한 메모리를 즉시 해제해야하므로 더 많은 코드를 알지 못해도 더 이상 말할 수 없습니다. –
당신은 문제가 있습니다, 문제는 UIPastebord의 메모리가 릴리스가 아닙니다. 나는 또 다른 질문을 게시, 고마워. – waitianlou