Sure, Why not?

Virtual Memory 가상 메모리 본문

iOS/💻

Virtual Memory 가상 메모리

joho2022 2024. 9. 1. 12:00

가상메모리가 뭔데?

 

🤔 가상 메모리란?

🙋‍♂️

가상 메모리는 물리적인 RAM이 부족할 때, 디스크 공간을 사용해서 메모리를 확장하는 기술입니다.

사용 중인 데이터는 RAM에 유지되고,

사용하지 않는 데이터는 디스크로 이동하여 필요할 때 다시 불러옵니다.

“페이지”라는 단위로 나누어 데이터 이동이 이루어집니다.

 

- 페이지 아웃:

컴퓨터의 물리적 메모리(RAM)에 자리가 부족할 때,

사용하지 않는 데이터를 디스크로 옮기는 과정을 말합니다.

RAM → 디스크로 데이터 이동

 

- 페이즈 인:

필요한 데이터를 디스크에서 다시 RAM으로 불러오는 과정을 말합니다.

디스크 → RAM 데이터 이동

이를 통해 효율적인 메모리 사용을 할 수 있게 되는 것입니다.

🤔 iOS에서 가상메모리는?

🙋‍♂️

그러나 iOS에서 가상메모리는 위의 가상메모리 시스템과 차이가 있습니다.

iOS는 디스크에서 데이터 스왑하는 대신 압축 메모리 기술을 사용합니다.

사용되지 않는 페이지를 압축하여, RAM에서 더 적은 공간으로 차지할 수 있도록 합니다.

iOS에서 압축된 데이터를 빠르게 해제하고 사용합니다.

이러한 방법을 채택한 이유는 모바일 디바이스는 빠른 성능을 유지하면서 전력 소모를 최소화해야 하기 때문에 압축 메모리 기술을 사용한 것 같다고 생각합니다.

Clean Memory

이 영역의 데이터는 변경되지 않았기 때문에,

page out 되는 공간을 말합니다.

이때 RAM은 필요한 작업에 필요한 메모리 공간을 확보됩니다.

Dirty Memory

이미 데이터가 변경되어서 page out 될 수 없는 공간을 말합니다.

예를 들어, 배열을 선언 후에 특정 인덱스에 새로운 값을 할당하면, 그 인덱스 메모리 영역은 변경되었으므로, 더티상태가 됩니다.

Compressed memory

디스크로 데이터를 옮기는 대신 RAM 내에서 먼저 최적화하여 I/O 작업으로 인한 속도 저하를 방지합니다.

Swapped Memory

페이징 기술과 관련되어 있습니다.

Resident Memory

RAM에 올라가 있는 메모리의 양을 말합니다.

 


그래서 두 눈으로 확인하기 위해서

vmmap, heap, leaks와 같은 명령어를 사용해서 메모리 확인하는 방법도 있지만,

VM Tracker를 사용해서 메모리 사용패턴을 확인 가능합니다.

VM Tracker:

iOS 애플리케이션의 가상 메모리 사용을 추적하고 분석하는 도구

  1. Product’ > ‘Profile
  2. Allocations 선택

( 상황 예시 ) 앱이 실행될 때 배열에 1,000만 개의 Int형 값을 추가합니다.

 

실험 상황을 통해 메모리 사용 패턴을 확인해 보면,

Dirty 메모리 감소: 생성한 배열 데이터는 더 이상 필요하지 않아서, 디스크로 이동된다.

Swapped 메모리 증가: RAM에서 디스크로 데이터 이동 → 시스템이 RAM의 메모리 공간 여유를 위해

Resident 메모리 감소: 실제 RAM에서 사용 중인 메모리가 줄어들고 있는 상태를 볼 수 있다.

 

키비바이트: 2^10 바이트

미비바이트: 2^20 바이트

 

Reference

https://ios-development.tistory.com/1604

https://developer.apple.com/videos/play/wwdc2018/416/

'iOS > 💻' 카테고리의 다른 글

PNG와 JPEG의 차이  (2) 2024.09.05
Memory Leak 메모리 누수  (0) 2024.09.02
List 데이터 식별하는 방법  (0) 2024.08.31
Split과 Components 차이  (0) 2024.08.30
final하면 왜 좋을까?  (1) 2024.08.29