| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- swiftdata
- contentalignmentpoint
- Tuist
- 코드스쿼드
- swift 모듈화
- xcode 공백 표시
- 함께자라기
- png
- 팀 개발을 위한 git
- SwiftUI
- nidthirdpartylogin
- NSTextStorage
- fetchdescriptor
- webp
- github 시작하기
- Firestore
- JPEG
- spm 에러
- 테스트 타겟
- NSTextStorageDelegate
- heic
- 캐러셀
- Cocoa Pod
- 무한스크롤
- .pbxproj
- TestFlight
- xcode 엔터 표시
- 타뷸레이션
- 클린 아키텍처
- JPG
- Today
- Total
Sure, Why not?
Virtual Memory 가상 메모리 본문

🤔 가상 메모리란?
🙋♂️
가상 메모리는 물리적인 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 애플리케이션의 가상 메모리 사용을 추적하고 분석하는 도구
- Product’ > ‘Profile
- Allocations 선택

실험 상황을 통해 메모리 사용 패턴을 확인해 보면,
Dirty 메모리 감소: 생성한 배열 데이터는 더 이상 필요하지 않아서, 디스크로 이동된다.
Swapped 메모리 증가: RAM에서 디스크로 데이터 이동 → 시스템이 RAM의 메모리 공간 여유를 위해
Resident 메모리 감소: 실제 RAM에서 사용 중인 메모리가 줄어들고 있는 상태를 볼 수 있다.
키비바이트: 2^10 바이트
미비바이트: 2^20 바이트
Reference
'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 |