hsleedevelop
hsleedevelop
hsleedevelop
  • 분류 전체보기 (22)
    • Develop (22)
      • CS (1)
      • iOS (7)
      • Swift (13)
      • SwiftUI (0)

최근 글

  • Xcode 14 빌드 속도 올리는 방법
    2023.01.29
    Xcode 14 빌드 속도 올리는 방법
  • 스토리보드, XIB Inspectable에 enum 연동하⋯
    2023.01.29
  • M1 ARM-64 Simulator 지원하지 않는 프레임워⋯
    2023.01.07
  • String에 HTML 링크 적용
    2023.01.07
  • Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법
    2022.11.13
    Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법

인기 글

  • [iOS][Swift] WiFi AP 목록 스캔 또는 장치⋯
    2022.08.28
  • Figma 자동 익스포트 for Xcode, Android⋯
    2022.08.28
    Figma 자동 익스포트 for Xcode, Android⋯
  • Failed to uninstall gitlab-runne⋯
    2022.09.16
    Failed to uninstall gitlab-runne⋯
  • iOS 메모리 사용량 파헤치기
    2022.09.11
  • Xcode 14 빌드 속도 올리는 방법
    2023.01.29
    Xcode 14 빌드 속도 올리는 방법

태그

  • Xcode 14 빌드 속도 올리는 방법
  • SVG download
  • Xcode Build
  • SVG 다운로드
  • 스위프트
  • enum 연동하는 방법
  • ios localization
  • Xcode bezel
  • Link
  • Kingfisher SVG
  • Xcode Build 실행 시 명확하게 표시하는 방법
  • Swift
  • architecturel
  • 시뮬레이터
  • Xcode 정의
  • xcode 팁
  • Jump to definition
  • CSS 적용하는 방법
  • XIB Inspectable
  • excldue
  • Xcode 빌드
  • SwiftUI 상에서 HTML 출력과 Link
  • Xcode
  • Xcode 베젤
  • html
  • xcode 꿀팁
  • Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법
  • KingFisher에서 SVG 이미지 다운로드하는 방법
  • Simulator
  • Xcode Definition

최근 댓글

전체 방문자
1,465
오늘
2
어제
2

티스토리

hELLO · Designed By 정상우.
hsleedevelop

hsleedevelop

Develop/iOS

iOS 메모리 사용량 파헤치기

2022. 9. 11. 20:29
반응형

xcode memoty debug

앱 메모리 사용량 줄이기

앱 메모리 사용량을 줄여야 하는 이유:

  • 사용자가 더 나은 경험을 할 수 있다는 것입니다.
  • 앱 실행 속도가 빨라질 뿐만 아니라 시스템이 더 잘 수행될 것입니다.
  • 앱이 메모리에 더 오래 유지됩니다.
  • 다른 앱은 메모리에 더 오래 남아 있습니다.
  • 거의 모든 경우에 안 하는 것보다 더 좋습니다.

클린 & 더티 페이지 (Clean & Dirty pages)

힙에 여러 개체를 보유할 수 있는 페이지에 제공된 메모리와 일부 개체는 여러 페이지에 걸쳐 있을 수 있습니다.
각 페이지는 일반적으로 16KB이며 클린하거나 더티해질 수 있습니다.

dirty_page

앱의 메모리 사용량은 페이지 수에 페이지 크기를 곱한 것입니다.

예시:

가득차지 않은 4페이지로 메모리 매핑된 50KB인 JPEG가 있는 경우

이것의 좋은 예는 다른 용도로 사용할 수 있도록 가득 차지 않은 4페이지로 메모리 매핑된 50KB인 JPEG가 있는 경우입니다.

메모리 압축

iOS에는 전통적인 디스크 스왑 시스템이 없는 대신 메모리 압축을 사용합니다. (iOS 7에서 도입)

캐싱을 사용하기 위해 사전을 사용하는데, 이는 이제 총 5페이지를 사용하게 됩니다 그러나 만일 잠시 동안 이 사전에 액세스하지 않게 될 경우, 시스템이 임의의 공간이 필요할 경우 한 페이지로 압축할 수 있지만, 나는 공간을 절약하거나 4개의 추가 페이지를 둘 수도 있습니다.

캐시를 할 때 CPU가 반복 작업을 하지 않도록 하기 위해 너무 많이 캐시해서는 안 되며, 만일 너무 많이 캐시하면 모든 메모리를 사용하게 되어 시스템에 문제가 발생할 수 있습니다.

기기에 따라 한도가 변경되며, 따라서 4기가바이트 장치처럼 1기가바이트 장치에서 동일하게 많은 메모리를 사용할 수 없습니다.

이미지

이미지의 경우 메모리 사용이 파일 크기가 아니라 이미지의 크기와 관련이 있다는 것입니다.

예시:

lake_mountain

2048 * 1536

길이가 2048이고 너비가 1536이고 이미지 크기가 590KB인 이미지가 있는 경우 메모리에 590KB를 할당하지 않습니다. 그러나 실제로 얼마나 많은 메모리를 사용합니까? 10MB, 예 10MB는 엄청나죠. 이 10MB를 어떻게 계산할 수 있습니까?

2048픽셀 x 1536픽셀 x 픽셀당 4바이트

이미지는 iOS에서 어떻게 작동할까요?

로드, 디코딩 및 렌더링 단계가 있습니다.

 

로드: 압축된 이 590킬로바이트 JPEG 파일을 메모리에 로드합니다.

디코딩: 해당 JPEG 파일을 GPU가 읽을 수 있는 형식으로 변환합니다. 이제 압축을 풀어야 10MB가 됩니다.

왜 4바이트인가?

qube_srgb

SRGB: (표준 레드 그린 블루)

 

이제 SRGB 형식으로 얻은 픽셀당 4바이트입니다. 이것은 일반적으로 그래픽의 이미지가 가장 일반적인 형식입니다. 픽셀당 4비트이므로 빨간색에 1바이트, 녹색에 1바이트, 파란색에 1바이트 및 알파 구성 요소가 있습니다.

UIImage와 ImageIO 비교

UIImage는 크기 조정 및 크기 조정에 비용이 많이 듭니다.
• 원본 이미지를 메모리에 압축 해제합니다.
• 내부 좌표 공간 변환은 비용이 많이 듭니다.

ImageIO는 메모리를 더럽히지 않고 이미지 크기와 메타데이터 정보를 읽을 수 있습니다.
ImageIO는 크기가 조정된 이미지의 비용으로 이미지 크기를 조정할 수 있습니다.

요약

메모리는 유한하고 공유되는 자원입니다.
Xcode에서 실행할 때 메모리 사용량을 모니터링하세요.
iOS에서 이미지 형식을 선택하도록 하세요.
이미지 다운샘플링에 ImageIO 사용하세요.
화면 밖에 있는 대용량 리소스 언로드하세요.
메모리 그래프를 사용하여 메모리 사용 공간을 더 이해하고 줄여보세요

 

출처: WWDC 애플

 

source: https://mattsaedi.medium.com/deep-dive-into-ios-memory-db0b685e7905

 

 

반응형

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

Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법  (0) 2022.11.13
Xcode Build 실행 시 명확하게 표시하는 방법  (0) 2022.11.13
iOS 시뮬레이터에서 URLScheme을 빠르게 여는 방법  (0) 2022.10.12
rbenv 환경에서 cocoapods 최신 버전 설치 방법  (0) 2022.10.12
Xcode Extension이 사라진 경우 해결방법  (0) 2022.05.06
    'Develop/iOS' 카테고리의 다른 글
    • Xcode Build 실행 시 명확하게 표시하는 방법
    • iOS 시뮬레이터에서 URLScheme을 빠르게 여는 방법
    • rbenv 환경에서 cocoapods 최신 버전 설치 방법
    • Xcode Extension이 사라진 경우 해결방법
    ImageIO, IOS, ios 메모리, iOS 메모리 절약, iOS 메모리 줄이기, iOS 이미지 메모리
    hsleedevelop
    hsleedevelop
    iOS, Swift js, node js, react c, c++, .net ruby, sql
    댓글쓰기
    다음 글
    rbenv 환경에서 cocoapods 최신 버전 설치 방법
    Xcode Extension이 사라진 경우 해결방법
    이전 글
    Xcode Extension이 사라진 경우 해결방법

    티스토리툴바