이 문제가 있습니다. 코어 데이터에 이미지 데이터베이스가 있습니다. 모든 이미지 (약 80MB)를 가져 와서 NSMutableArray에 넣습니다. 객체가 올바르게 폴트됩니다코어 데이터 메모리 사용 및 메모리 경고
NSArray *fetchResults = [self.managedObjectContext executeFetchRequest:request error:&error];
self.cache = [NSMutableArray arrayWithArray:fetchResults];
for (ImageCache *imageObject in self.cache) {
NSLog(@"Is fault? %i", [imageObject isFault]);
}
로그를 읽고, 내가 개체가 모두 제대로 악기를 사용하여, 그러나 를 오류가 발생한 것을 볼, I 메모리의 80메가바이트가 사용되는 것을 알 수있다. 이것이 코어 데이터가 결과를 캐시하고 이것이 필요할 때 메모리를 확보해야하는 이유라고 생각합니다. 하지만 메모리 경고를 시뮬레이트하면 아무런 반응이 없습니다. 80MB가 남아 있습니다. (예)
바이트그래프 카테고리 라이브 # 생활 # 일시적인 전체 바이트 # 전체 # 할당 (인터넷/전체) 0 malloc에 176,00 : -
악기를 보면 할당의 80메가바이트 많은 malloc에 의해 사용됩니다 KB 8,59 MB 50 57 18,39 MB 107 % 0.00, % 0.00 0 Malloc 200,00 KB 8,204 42 460 98,05 MB 502 % 0.00, % 0.04 0 Malloc 168,00 KB 7,05 https://www.dropbox.com/s/du1b5a5wooif4w7/Call%20Tree.png
,691,363이 전체 호출 트리의 이미지에 대한 링크입니다 0.00메가바이트 43 19 10,17 MB 62 % 0.00 %210
아이디어가 있으십니까? 고마워
코어 데이터가 '메모리 경고 수준 2'에서 메모리를 해제 했습니까? 시나리오에서 메모리 충돌이 적게 발생할 수 있습니까? – brigadir
메모리 경고 수준 2를 시뮬레이트하는 "마법 방법"이 있습니까? 아니면 "단순히"나는 메모리를 소비해야합니까? – LombaX
시뮬레이션 방법을 모르겠습니다. 다른 "무거운"앱 (예를 들어 Appstore)을 실행하고 앱을 백그라운드로 유지하고 콘솔 로그와 Instruments 메모리 차트를 추적해야합니다. 'level 2' 경고가 콘솔에서 언급 될 것입니다 - 그래서 그 순간에 메모리 차트를보아야합니다. – brigadir