오늘의 지식: iOS 메모리 부족 경고에 대한 대응

최대 1 분 소요

시스템에서 메모리가 부족하면 앱에 경고를 보냅니다.

개요

시스템에 여유 메모리가 부족하고 일시 중단된 앱을 종료하여 메모리를 회수할 수 없는 경우, UIKit은 실행 중인 앱에 메모리 부족 경고를 보냅니다. UIKit은 다음과 같은 방법으로 메모리 부족 경고를 보냅니다.

  • UIApplicationDelegate의 applicationDidReceiveMemoryWarning(_:) 메서드를 호출합니다.
  • UIViewController의 didReceiveMemoryWarning() 메서드를 호출합니다.
  • 등록된 옵저버에 didReceiveMemoryWarningNotification 노티피케이션을 보냅니다.
  • 디스패치 큐에 DISPATCH_SOURCE_TYPE_MEMORYPRESSURE 를 보냅니다.

앱에서 메모리 부족 경고를 받으면 최대한 빨리 메모리를 확보해야 합니다. 디스크 상에 기록되어 있거나 나중에 다시 로드할 수 있는 이미지, 미디어 파일, 대용량 파일에 대한 참조를 제거합니다. 더 이상 사용하지 않는 임시 객체에 대한 참조를 제거합니다. 상당한 메모리를 사용하는 작업을 하는 경우 디스패치 큐를 일시정지하거나 동시에 작업하는 수를 제한합니다.

❗️앱에서 사용하는 메모리를 줄이지 않으면 앱이 종료될 수 있습니다. 그러므로 저장되지 않은 데이터를 디스크에 저장하는 것을 고려해야 합니다.

⭐️ 메모리 부족 경고를 시뮬레이터에서 테스트해볼 수 있습니다. Debug -> Simulate Memory Warning을 누르면 메모리 부족 경고를 시뮬레이터에서 받아볼 수 있습니다.😎

참고 링크


Apple Responding to Memory Warnings

카테고리:

업데이트:

댓글남기기