Some greate topics using ARKit

Motion Capture

Skeleton in 3D

Simultaneous Front and Back Camera

  • Users can interact with AR content in the back camera view using just their face
  • Apple Demo(24:10)

Collaborative Sessions

  • Allow multiple devices to build a combined world map and share AR anchors and updates in real-time

Object Capture

  • Create 3D models by images
  • With depth sensor

Image尺寸太大,導致渲染的時候佔用太多內存,造成App卡頓

最近寫了一個demo專案,使用SE2的時候跑得很順,用iPhone8跑卻會Lag,播放影片會卡頓,仔細一看,當下Memory竟然飆到兩百多MB!

打開Instruments監控了一下,完全沒有出現memory leak,研究了一下Allocations,發現是GPUImage使用了過多的memory

Instruments筆記

記得打開dSYM才比較好分析哪裡有問題唷

Allocations的介紹

為什麼GPUImage使用了過多的memory呢?

圖片在記憶體使用上很容易產生干擾的佔用

  • 一個圖片文件從硬盤到展示需要經歷加載-解碼-渲染三步。
    以一個590KB大小,2048 * 1536表示的圖片為例,在3x設備上解碼後的內存佔用能夠達到10MB(2048 * 3 * 1536 * 3 * 4字節/像素)之多
  • UIImage會首先把圖片解碼加載到內存,內部空間坐標轉換也會帶來巨大的消耗
  • ImageIO能夠在不產生髒記憶體的情況下讀取到圖片尺寸和元信息,其內存消耗等於重新後的圖片尺寸產生的記憶體佔用

後來將以下Resize後,App使用的Memory少超多

  1. TableView上會用到的ImageView的圖片
  2. Video

App在iPhone8上也沒有再Lag了…

參考連結

ChunPing Lai

iOS Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store