2

은이 코드를 사용하여 이미지를 다운로드합니다.AFNetworking 메모리 부족 문제

+0

파일의 크기는 어느 정도입니까? 상당한 크기의 파일은 파일로 직접 스트리밍하면 다운로드하는 것이 가장 좋습니다. 이미지 스케일링을 포함하여 메인 스레드에서 많은 계산이 진행됩니다. – zaph

+0

@Zaph 1.4MB의 서버에 jpeg 파일이 있지만 이미지 뷰 –

+0

에로드 한 후 XCode에 70MB가 표시됩니다. 따라서 AFNetworking이 아니라 메모리 사용을 유발하는 이미지 코드입니다. 이미지가 얼마나 큰가요? JPEG 또는 PNG 등은 이미지를 압축하지만 이미지가 만들어지면 픽셀 당 4 바이트가됩니다. 메모리를 사용할 스케일링이 있습니다. 메모리가 일찍 릴리스되도록 스케일링 메소드 주위에 자동 릴리즈 풀을 놓아야합니다. – zaph

답변

2

AFNetworking이 아니라 메모리 사용을 유발하는 이미지 코드입니다. JPEG는 이미지를 압축하지만 이미지가 만들어지면 픽셀 당 4 바이트가됩니다. 1.4MB의 서버에있는 jpeg 파일은 모두 AFNetworking이므로로드됩니다.

AFNetworking이 다운로드하는 실제 데이터의 크기와 코드에서 일부 헬퍼 클래스를 사용하고있는 것으로 보입니다.

픽셀 당 4 바이트에서 5407 × 3605의 이미지는 77MB가 넘는 이미지를 생성합니다. 크기를 조절할 수 있지만 처음에는 원본 이미지가 렌더링되고 결국에는 두 개의 이미지가 있기 때문에 크기 조정에서 더 많은 메모리가 사용됩니다.

원본 이미지를 최대한 빨리 풀어주기 위해 원본 이미지의 생성과 자동 렌더링 풀에서 크기 조정을 래핑해야합니다.

처음에는 큰 이미지를로드하지 않는 것이 좋습니다.

관련 문제