2014-10-20 7 views
4

AFNetworking을 사용하여 원격 이미지를 가져올 때 Instrument에서 내 응용 프로그램의 프로파일 링을하고 CFNetwork에서 많은 양의 할당을 발견했습니다.이미지를 가져올 때 CFNetwork 메모리 스파이크가 발생했습니다.

한 예로 나는 89MB의 할당을 보았습니다 (이미지의 크기는 약 200KB에 불과합니다). 시연 할 스크린 샷을 첨부했습니다. 다른 사람이 전에 이것을 눈치 채셨습니까? 메모리가 적절하게 출시되었지만 이것이 왜 처음에 발생하는지 이해할 수 없습니다. 사전에

Profile

감사합니다.

+0

나는 단지 "모든 힙 할당 '을 관람하고 있음을 추가해야합니다,"모든 힙 & 익명 VM " – Ricky

+0

당신은 어떤 해결 방법이나이 메모리 증가를 해결하기 위해 어떤 기회를 찾을 수셨습니까? 나는 같은 문제에 직면하고있다. –

+0

@Rudeboy가 방금 끝났습니다. – Ricky

답변

3

iOS 8에서만 동일한 문제가 나타납니다. iOS 7의 어떤 버전에서도 발생하지 않습니다. 시뮬레이터에서는 132kb, 디바이스에서는 144kb입니다. 그것은의를 보인다

은이 문제와 관련된 수 :

https://github.com/AFNetworking/AFNetworking/issues/2314

가 나는 HTTP이 예에서는 nsurlsession를 사용하여 얻을 수행하고 있습니다. keep-alive를 보내지 않는 곳, 즉 google.com을 친다면, 그 kb가 malloc되지 않을 것입니다. 그러나 만약 당신이 keep-alive를 보내는 곳을 공격했다면 그것은 가능할 것입니다.

NSString * url = [NSString stringWithFormat:@"%@%.20f", @"http://someplace.com/?test=", (double)[[NSDate date] timeIntervalSince1970]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; 
[request setHTTPMethod:@"GET"]; 
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:nil] resume]; 

instruments