메모리 부족 경고와 관련된 게시물을 많이 읽었지만 앱에서 충돌 문제를 해결할 수 없었습니다. 악기의 할당은 2-7MB 범위의 라이브 바이트를 보여줍니다. 7 또는 7.5MB를 넘지는 않지만 앱이 계속 충돌합니다.메모리 사용량이 매우 낮아 앱이 다운 됨
할당 및 활동 모니터가 다른 메모리 사용 값을 보여주는 링크를 읽었습니다. 앞서 지정된대로 Allocations는 최대 7-7.5MB를 표시하지만 Activity Monitor는 앱이 시작될 때 약 75MB 사용량을 표시하며 프로그램을 사용할 때 증가 및 감소합니다. 그것은 110-120MB까지 올라간 다음 75-80MB로 줄입니다.
더 많은 링크에서 VM 트래커의 더티 크기 및 상주 크기를 살펴 봅니다. VM Tracker를 체크인하면 Dirty 크기가 30MB부터 시작되어 앱을 사용함에 따라 증가하기 시작합니다. 그것은 400MB를 넘습니다. 저는 약 70-80이 1024x1024 크기 인 약 150 개의 이미지를 사용하고 있습니다. 약 35 개는 110x110이고 나머지는 3000x4000 크기의 이미지입니다. 이 모든 이미지는 원래 png 형식으로되어 있었으며 프로그램 방식으로 JPG + ALPHA로 변환하여 애셋으로 응용 프로그램에 추가했습니다. 해당 이미지를로드해야 할 때마다 JPG + ALPHA 이미지를 16 부분으로 나누고 마지막으로 결합하여 원본 이미지를 얻습니다. 해상도 3000x4000의 이미지를로드하려고 시도 할 때 메모리가 할당에서 40-45MB까지 급상승했기 때문에이 방법을 사용했습니다. 이 방법은 메모리가 10MB를 초과하지 않도록합니다.
이러한 모든 기록 및 통계는 시뮬레이터를 사용하여 측정됩니다.
응용 프로그램은 시뮬레이터에서 충돌하지 않지만 실제 장치에서는 충돌합니다. iPad2를 테스트 용으로 사용하고 있습니다.
이 문제를 해결하는 데 도움을주십시오. 나는 지난 2 일 동안 붙어있어 앱 충돌을보고 완전히 좌절했습니다.
'힙샷'을 검색하면 할당 도구의 기능입니다. 당신은 특정 시간 간격으로 alloc'd 및 dealloc 된 메모리를 추적 할 수 있습니다. 또한, 일부 이미지 처리 메소드는 'imageNamed'와 같은 캐시를 사용합니다. 'NSAutoreleasePool'을 시도해 볼 수도 있습니다. 동시에 많은 양의 이미지가 메모리에 있기 때문입니다. – Templar
크래시 로그의 내용은 무엇입니까? –
@Templar 답장을 보내 주셔서 감사합니다. 나는 어디에서나 NSAutoreleasePool을 사용했고 initWithContentsOfTheFile을 사용하여 이미지의 내용을로드했습니다. 힙샷으로 시도하고 여기에 결과를 게시합니다. – Srikanth