Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 메모리 사용에 관해 #38

Open
samsung-ga opened this issue Aug 28, 2022 · 0 comments
Open

iOS 메모리 사용에 관해 #38

samsung-ga opened this issue Aug 28, 2022 · 0 comments

Comments

@samsung-ga
Copy link
Owner

samsung-ga commented Aug 28, 2022

메모리

아이폰 디바이스에서 메모리는 매우 제한적이다. 그럼 하나의 앱이 메모리를 너무 많이 사용하면 어떻게 될까?

Reducing Your App's Memory Use

Reducing Your App's Memory Use

개요

디바이스이 있는 메모리(RAM)은 여러 앱, OS, kernel 등이 공용으로 사용하는 제한된 리소스이다. iOS는 모두가 적절히 메모리를 사용할 수 있게 여러기술을 통해 분배해주지만, 이 기술들이 속도와 응답성(?)이라는 트레이드 오프가 있다. 예를들어, iOS는 백그라운드에서 동작하는 앱이 메모리를 많이 사용한다면 solid-state 스토리지로 보낼 수 있다. 그렇게 되면 앱이 백그라운드 작업을 다시 실행시키거나 포그라운드로 돌아오려고 딜레이가 발생한다.

하나의 앱이 너무 많은 메모리에 욕심을 부리면 아이폰은 적당히 쓰라고 경고 메세지를 보낸다. 앱이 메모리 사용량의 한계까지 사용하고 있다는 의미의 리포트를 보낸다(본 적이 없는데..) 하지만 종료되지는 않고 곧 종료될 수 있다는 경고이다. 계속 사용해서 결국 메모리 제한을 넘어버리면 앱이 강제 종료된다.

앱이 사용하는 메모리의 제한량을 둔다면, 유저가 다른 앱을 사용할 때에 이점을 얻을 수 있다. 그럼 메모리 사용량에 대해 더 자세히 알아보자.

메모리 사용에 관한 이해

  • 메모리 사용량은 memory pag가 얼마나 사용됐는지를 의미한다.
  • 하나의 page 크기는 보통 16KB로 되어있고, 메모리 사용량은 page수 x page 크기이므로 page수 x 16KB 가 된다.
  • 만약 iOS가 바이트 하나를 저장하기 위해 새로운 페이지를 할당해야한다면, 16KB만큼의 메모리를 할당해야한다.

메모리가 사용되는 순간?

  • 앱의 실행 파일 (.exe)이나 연결된 라이브러리, 프레임워크에 정의된 데이터 구조는 메모리 사용에 기여한다.
  • 하지만 랭빙 런타임에 할당되는 메모리는 처음부터 메모리 사용량에 측정되지 않는다.
  • 이러한 메모리는 **"clean"**한 상태이고, 물리적인 RAM을 할당할 필요가 없다.
  • 만약, 앱이 할당된 메모리에 데이터를 쓸 때 **"dirty"**하게 되고 이 때 콘텐츠를 저장하기 위해 RAM을 사용한다.
  • dirty 메모리는 메모리 사용량에 측정된다.

metrickit-allocating-pages~dark@2x

앱 메모리 사용량 확인하는 방법

  • Window -> Organizer -> Memory 에서 확인할 수 있다.

  • 메모리 사용량은 2가지 영역으로 관리된다.

    Peak memory : 최고 메모리 사용량, iOS가 주기적으로 샘플링을 하여 메모리 사용량을 수집하는데 그 중에 가장 큰 메모리를 보여준다.

    Memory at Suspension : 앱이 일시정지 했을 때의 메모리, 백그라운드로 갔을 때의 기록이다.

  • 아래는 메모리 사용량을 직접 확인해보았는데,, Metric 데이터가 충분치않다고 수치를 보여주지 않는다.

스크린샷 2022-08-28 오후 1 47 55


Gathering Information About Memory Use

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant