유저 목록 부하/렌더 최적화

Tags
optimization
추천 여부
recommand

개요

  • B2B 엔진의 경우 한 엔진에 등록해서 이용하는 고객 수가 예상보다 훨씬 많다.
  • 태블릿의 성능은 좋지 않고, 따라서 유저 수에 따라 렌더링 시 버벅임이 너무 심했다.
  • 메모리 부족 관련 이슈로 파악하였다.
  • 컴포넌트를 모두 갖고 있는 것이 아닌, 컴포넌트 개수는 유지한 채 prop만 바꿔써 렌더링 시키는 방식으로 메모리 최적화도 병행하여 유저 수와 상관없이 일괄된 속도를 보일 수 있도록 개선함.
    • FlashList 라이브러리 활용
 

메모리 부하 테스트

⚠️
- 테스트 영상 : - 좌 : 3 + 32GB 태블릿 - 우 : 4 + 32GB 태블릿 - FlashList를 통해 유저 수에 따른 메모리 최적화가 적용된 상태
⚠️
테스트 순서 - 초기 렌더링 - 천천히 스크롤 - 빠르게 스크롤 - 초성바 클릭하며 이동 - 유저 검색을 통해 몸상태 페이지 진입

200명

3 + 32GB 태블릿 (200명)
4 + 32GB 태블릿 (200명)

400명

3 + 32GB 태블릿 (400명)
4 + 32GB 태블릿 (400명)

1000명

3 + 32GB 태블릿 (1000명)
4 + 32GB 태블릿 (1000명)
 

2000명

3 + 32GB 태블릿 (2000명)
4 + 32GB 태블릿 (2000명)
 

5000명

3 + 32GB 태블릿 (5000명)
4 + 32GB 태블릿 (5000명)
 
 

시스템 사용 메모리

💡
PSS (Present Shared Set): PSS공유 메모리 영역을 여러 프로세스가 공유하는 경우 각 프로세스가 실제로 사용하는 메모리의 일부를 나타냅니다. 즉, 여러 프로세스가 공통으로 사용하는 메모리를 프로세스당 공평하게 분할한 값입니다. 이는 애플리케이션 간의 메모리 공유를 고려한 메모리 사용량을 나타내며, PSS가 높을수록 공통적으로 사용되는 메모리가 많다는 것을 의미합니다.
RSS (Resident Set Size): RSS특정 프로세스가 현재 실제 물리적 메모리에서 사용 중인 양을 나타냅니다. 이는 해당 프로세스가 실제로 점유하고 있는 메모리 양을 측정하는 값으로, 프로세스가 현재 활성화되어 있는 상태에서 메모리를 얼마나 사용하는지를 보여줍니다.
⚠️
아무런 사용자 앱을 실행하지 않은 상태에서 메모리를 측정함
$ adb shell dumpsys meminfo
전체 메모리 정보
Applications Memory Usage (in Kilobytes): Uptime: 7433995 Realtime: 7692359 Total RSS by process: 292,952K: system (pid 431) 221,596K: com.google.android.gms.persistent (pid 11293) 205,780K: com.android.systemui (pid 596) 180,648K: com.google.android.gms.unstable (pid 11798) 174,372K: com.android.launcher3 (pid 949 / activities) 165,008K: com.google.android.inputmethod.latin (pid 1331) 158,700K: com.google.android.gms (pid 18227) 132,964K: zygote (pid 255) 120,132K: android.process.media (pid 9670) 119,536K: com.google.android.apps.wellbeing (pid 16116) 114,532K: com.google.android.apps.searchlite (pid 22535) 110,776K: com.android.bluetooth (pid 22271) 109,336K: com.android.phone (pid 784) 106,552K: com.google.process.gservices (pid 7133) 106,032K: com.android.providers.media.module (pid 1066) 105,208K: com.google.android.permissioncontroller (pid 2457) 102,248K: com.google.android.ext.services (pid 859) 101,236K: com.google.android.setupwizard (pid 13521) 89,172K: com.android.se (pid 708) 88,916K: com.softwinner.runin (pid 808) 86,828K: com.android.printspooler (pid 22864) 83,004K: com.google.android.partnersetup (pid 22436) 57,232K: webview_zygote (pid 733) 24,396K: surfaceflinger (pid 287) 24,384K: mediaserver (pid 350) 17,712K: media.extractor (pid 340) 16,720K: cameraserver (pid 333) 16,088K: audioserver (pid 284) 13,404K: media.codec (pid 359) 12,960K: media.swcodec (pid 363) 8,864K: wpa_supplicant (pid 1090) 8,312K: android.hardware.camera.provider@2.4-service-lazy (pid 397) 8,000K: update_engine (pid 366) 7,840K: iorapd (pid 338) 7,432K: rild (pid 362) 7,368K: android.hardware.graphics.composer@2.2-service (pid 265) 7,280K: keystore (pid 339) 7,076K: netd (pid 254) 7,056K: transport (pid 21934) 7,004K: logd (pid 183) 6,628K: credstore (pid 285) 6,440K: traced_probes (pid 329) 6,432K: android.hardware.audio.service (pid 257) 6,356K: iorap.prefetcherd (pid 523) 6,328K: gpuservice (pid 286) 6,204K: gatekeeperd (pid 365) 6,200K: media.metrics (pid 341) 5,940K: android.hardware.wifi@1.0-service-lazy (pid 562) 5,908K: init (pid 1) 5,800K: vold (pid 195) 5,672K: wificond (pid 357) 5,508K: adbd (pid 1073) 5,452K: drmserver (pid 334) 5,048K: incidentd (pid 336) 4,964K: statsd (pid 253) 4,940K: installd (pid 337) 4,824K: android.hardware.keymaster@4.1-service-aw (pid 203) 4,776K: ueventd (pid 171) 4,728K: display.output-service (pid 281) 4,728K: storaged (pid 355) 4,712K: servicemanager (pid 185) 4,604K: hwservicemanager (pid 186) 4,600K: init (pid 169) 4,588K: android.hardware.radio.config@1.1-service (pid 272) 4,352K: android.hardware.graphics.allocator@4.0-service (pid 264) 4,264K: android.hardware.sensors@2.0-service (pid 273) 4,144K: android.hardware.bluetooth@1.0-service (pid 258) 4,124K: android.hardware.gatekeeper@1.0-service-aw (pid 260) 4,108K: android.hardware.cas@1.2-service (pid 259) 4,024K: traced (pid 330) 3,992K: android.hardware.thermal@2.0-service.aw (pid 278) 3,928K: android.hardware.usb@1.0-service.aw (pid 280) 3,888K: android.hardware.health@2.1-service (pid 266) 3,820K: android.hardware.power-service-aw (pid 271) 3,704K: android.hardware.lights-service (pid 267) 3,688K: android.system.suspend@1.0-service (pid 201) 3,592K: android.hardware.memtrack@1.0-service (pid 269) 3,476K: abb (pid 3106) 3,460K: android.hardware.boot@1.1-service (pid 202) 3,228K: vndservicemanager (pid 187) 3,188K: radio_monitor (pid 361) 3,112K: awlogd (pid 371) 3,096K: android.hidl.allocator@1.0-service (pid 256) 3,088K: dumpsys (pid 23192) 3,060K: dom2reg (pid 360) 2,808K: kmsgd (pid 375) 2,724K: tee_supplicant (pid 204) 2,604K: lmkd (pid 184) 2,520K: iptables-restore (pid 274) 2,516K: sh (pid 1043) 2,508K: sh (pid 21932) 2,448K: process-tracker (pid 21860) 2,352K: ip6tables-restore (pid 275) 2,160K: tombstoned (pid 247) 2,112K: sh (pid 188) Total RSS by OOM adjustment: 625,560K: Native 132,964K: zygote (pid 255) 57,232K: webview_zygote (pid 733) 24,396K: surfaceflinger (pid 287) 24,384K: mediaserver (pid 350) 17,712K: media.extractor (pid 340) 16,720K: cameraserver (pid 333) 16,088K: audioserver (pid 284) 13,404K: media.codec (pid 359) 12,960K: media.swcodec (pid 363) 8,864K: wpa_supplicant (pid 1090) 8,312K: android.hardware.camera.provider@2.4-service-lazy (pid 397) 8,000K: update_engine (pid 366) 7,840K: iorapd (pid 338) 7,432K: rild (pid 362) 7,368K: android.hardware.graphics.composer@2.2-service (pid 265) 7,280K: keystore (pid 339) 7,076K: netd (pid 254) 7,056K: transport (pid 21934) 7,004K: logd (pid 183) 6,628K: credstore (pid 285) 6,440K: traced_probes (pid 329) 6,432K: android.hardware.audio.service (pid 257) 6,356K: iorap.prefetcherd (pid 523) 6,328K: gpuservice (pid 286) 6,204K: gatekeeperd (pid 365) 6,200K: media.metrics (pid 341) 5,940K: android.hardware.wifi@1.0-service-lazy (pid 562) 5,908K: init (pid 1) 5,800K: vold (pid 195) 5,672K: wificond (pid 357) 5,508K: adbd (pid 1073) 5,452K: drmserver (pid 334) 5,048K: incidentd (pid 336) 4,964K: statsd (pid 253) 4,940K: installd (pid 337) 4,824K: android.hardware.keymaster@4.1-service-aw (pid 203) 4,776K: ueventd (pid 171) 4,728K: display.output-service (pid 281) 4,728K: storaged (pid 355) 4,712K: servicemanager (pid 185) 4,604K: hwservicemanager (pid 186) 4,600K: init (pid 169) 4,588K: android.hardware.radio.config@1.1-service (pid 272) 4,352K: android.hardware.graphics.allocator@4.0-service (pid 264) 4,264K: android.hardware.sensors@2.0-service (pid 273) 4,144K: android.hardware.bluetooth@1.0-service (pid 258) 4,124K: android.hardware.gatekeeper@1.0-service-aw (pid 260) 4,108K: android.hardware.cas@1.2-service (pid 259) 4,024K: traced (pid 330) 3,992K: android.hardware.thermal@2.0-service.aw (pid 278) 3,928K: android.hardware.usb@1.0-service.aw (pid 280) 3,888K: android.hardware.health@2.1-service (pid 266) 3,820K: android.hardware.power-service-aw (pid 271) 3,704K: android.hardware.lights-service (pid 267) 3,688K: android.system.suspend@1.0-service (pid 201) 3,592K: android.hardware.memtrack@1.0-service (pid 269) 3,476K: abb (pid 3106) 3,460K: android.hardware.boot@1.1-service (pid 202) 3,228K: vndservicemanager (pid 187) 3,188K: radio_monitor (pid 361) 3,112K: awlogd (pid 371) 3,096K: android.hidl.allocator@1.0-service (pid 256) 3,088K: dumpsys (pid 23192) 3,060K: dom2reg (pid 360) 2,808K: kmsgd (pid 375) 2,724K: tee_supplicant (pid 204) 2,604K: lmkd (pid 184) 2,520K: iptables-restore (pid 274) 2,516K: sh (pid 1043) 2,508K: sh (pid 21932) 2,448K: process-tracker (pid 21860) 2,352K: ip6tables-restore (pid 275) 2,160K: tombstoned (pid 247) 2,112K: sh (pid 188) 292,952K: System 292,952K: system (pid 431) 493,204K: Persistent 205,780K: com.android.systemui (pid 596) 109,336K: com.android.phone (pid 784) 89,172K: com.android.se (pid 708) 88,916K: com.softwinner.runin (pid 808) 216,808K: Persistent Service 110,776K: com.android.bluetooth (pid 22271) 106,032K: com.android.providers.media.module (pid 1066) 174,372K: Foreground 174,372K: com.android.launcher3 (pid 949 / activities) 323,844K: Visible 221,596K: com.google.android.gms.persistent (pid 11293) 102,248K: com.google.android.ext.services (pid 859) 165,008K: Perceptible 165,008K: com.google.android.inputmethod.latin (pid 1331) 120,132K: A Services 120,132K: android.process.media (pid 9670) 1,056,244K: Cached 180,648K: com.google.android.gms.unstable (pid 11798) 158,700K: com.google.android.gms (pid 18227) 119,536K: com.google.android.apps.wellbeing (pid 16116) 114,532K: com.google.android.apps.searchlite (pid 22535) 106,552K: com.google.process.gservices (pid 7133) 105,208K: com.google.android.permissioncontroller (pid 2457) 101,236K: com.google.android.setupwizard (pid 13521) 86,828K: com.android.printspooler (pid 22864) 83,004K: com.google.android.partnersetup (pid 22436) Total RSS by category: 929,388K: .so mmap 827,780K: .apk mmap 436,200K: .jar mmap 353,760K: .art mmap 247,788K: .oat mmap 215,560K: Native 136,584K: Dalvik 120,220K: Other mmap 73,008K: .dex mmap 44,392K: Dalvik Other 26,668K: Unknown 20,068K: Stack 19,880K: Other dev 15,292K: .ttf mmap 1,536K: Ashmem 0K: Cursor 0K: Gfx dev 0K: EGL mtrack 0K: GL mtrack 0K: Other mtrack Total PSS by process: 135,493K: system (pid 431) 70,714K: com.android.systemui (pid 596) 66,453K: com.google.android.gms.persistent (pid 11293) 62,320K: com.android.launcher3 (pid 949 / activities) 56,003K: com.google.android.inputmethod.latin (pid 1331) 34,678K: com.google.android.gms (pid 18227) 34,479K: com.google.android.apps.wellbeing (pid 16116) 33,920K: com.google.android.gms.unstable (pid 11798) 28,428K: android.process.media (pid 9670) 21,929K: com.google.android.apps.searchlite (pid 22535) 21,442K: zygote (pid 255) 20,343K: com.android.bluetooth (pid 22271) 18,715K: com.google.process.gservices (pid 7133) 18,643K: com.google.android.permissioncontroller (pid 2457) 18,522K: com.google.android.ext.services (pid 859) 17,198K: com.android.phone (pid 784) 16,340K: com.android.se (pid 708) 16,314K: com.softwinner.runin (pid 808) 15,637K: com.android.providers.media.module (pid 1066) 13,457K: com.google.android.setupwizard (pid 13521) 12,211K: surfaceflinger (pid 287) 10,803K: webview_zygote (pid 733) 8,715K: mediaserver (pid 350) 8,663K: com.google.android.partnersetup (pid 22436) 8,617K: com.android.printspooler (pid 22864) 8,043K: media.swcodec (pid 363) 6,341K: media.codec (pid 359) 6,287K: audioserver (pid 284) 5,117K: transport (pid 21934) 5,089K: cameraserver (pid 333) 5,021K: logd (pid 183) 4,778K: wpa_supplicant (pid 1090) 4,724K: media.extractor (pid 340) 3,656K: android.hardware.camera.provider@2.4-service-lazy (pid 397) 3,593K: rild (pid 362) 3,241K: android.hardware.audio.service (pid 257) 3,089K: netd (pid 254) 3,039K: init (pid 1) 2,768K: iorapd (pid 338) 2,613K: android.hardware.graphics.composer@2.2-service (pid 265) 2,562K: update_engine (pid 366) 2,366K: iorap.prefetcherd (pid 523) 2,338K: statsd (pid 253) 2,284K: android.hardware.wifi@1.0-service-lazy (pid 562) 2,073K: traced_probes (pid 329) 2,017K: vold (pid 195) 1,977K: adbd (pid 1073) 1,886K: ueventd (pid 171) 1,840K: init (pid 169) 1,797K: keystore (pid 339) 1,699K: android.hardware.keymaster@4.1-service-aw (pid 203) 1,501K: credstore (pid 285) 1,442K: media.metrics (pid 341) 1,327K: installd (pid 337) 1,299K: wificond (pid 357) 1,272K: traced (pid 330) 1,268K: gpuservice (pid 286) 1,196K: gatekeeperd (pid 365) 1,180K: android.hardware.radio.config@1.1-service (pid 272) 1,164K: android.hardware.cas@1.2-service (pid 259) 1,143K: android.hardware.bluetooth@1.0-service (pid 258) 1,088K: incidentd (pid 336) 1,085K: android.hardware.gatekeeper@1.0-service-aw (pid 260) 1,078K: storaged (pid 355) 1,036K: drmserver (pid 334) 1,025K: android.hardware.sensors@2.0-service (pid 273) 997K: servicemanager (pid 185) 983K: android.hardware.graphics.allocator@4.0-service (pid 264) 976K: android.hardware.health@2.1-service (pid 266) 971K: display.output-service (pid 281) 969K: android.hardware.thermal@2.0-service.aw (pid 278) 967K: hwservicemanager (pid 186) 911K: awlogd (pid 371) 866K: android.hardware.boot@1.1-service (pid 202) 790K: android.hardware.usb@1.0-service.aw (pid 280) 789K: android.system.suspend@1.0-service (pid 201) 757K: android.hardware.memtrack@1.0-service (pid 269) 752K: vndservicemanager (pid 187) 741K: android.hardware.power-service-aw (pid 271) 731K: android.hardware.lights-service (pid 267) 696K: abb (pid 3106) 641K: iptables-restore (pid 274) 626K: tee_supplicant (pid 204) 624K: ip6tables-restore (pid 275) 614K: dumpsys (pid 23192) 608K: process-tracker (pid 21860) 604K: android.hidl.allocator@1.0-service (pid 256) 589K: radio_monitor (pid 361) 580K: sh (pid 188) 568K: sh (pid 1043) 564K: lmkd (pid 184) 564K: sh (pid 21932) 548K: dom2reg (pid 360) 523K: tombstoned (pid 247) 521K: kmsgd (pid 375) Total PSS by OOM adjustment: 182,583K: Native 21,442K: zygote (pid 255) 12,211K: surfaceflinger (pid 287) 10,803K: webview_zygote (pid 733) 8,715K: mediaserver (pid 350) 8,043K: media.swcodec (pid 363) 6,341K: media.codec (pid 359) 6,287K: audioserver (pid 284) 5,117K: transport (pid 21934) 5,089K: cameraserver (pid 333) 5,021K: logd (pid 183) 4,778K: wpa_supplicant (pid 1090) 4,724K: media.extractor (pid 340) 3,656K: android.hardware.camera.provider@2.4-service-lazy (pid 397) 3,593K: rild (pid 362) 3,241K: android.hardware.audio.service (pid 257) 3,089K: netd (pid 254) 3,039K: init (pid 1) 2,768K: iorapd (pid 338) 2,613K: android.hardware.graphics.composer@2.2-service (pid 265) 2,562K: update_engine (pid 366) 2,366K: iorap.prefetcherd (pid 523) 2,338K: statsd (pid 253) 2,284K: android.hardware.wifi@1.0-service-lazy (pid 562) 2,073K: traced_probes (pid 329) 2,017K: vold (pid 195) 1,977K: adbd (pid 1073) 1,886K: ueventd (pid 171) 1,840K: init (pid 169) 1,797K: keystore (pid 339) 1,699K: android.hardware.keymaster@4.1-service-aw (pid 203) 1,501K: credstore (pid 285) 1,442K: media.metrics (pid 341) 1,327K: installd (pid 337) 1,299K: wificond (pid 357) 1,272K: traced (pid 330) 1,268K: gpuservice (pid 286) 1,196K: gatekeeperd (pid 365) 1,180K: android.hardware.radio.config@1.1-service (pid 272) 1,164K: android.hardware.cas@1.2-service (pid 259) 1,143K: android.hardware.bluetooth@1.0-service (pid 258) 1,088K: incidentd (pid 336) 1,085K: android.hardware.gatekeeper@1.0-service-aw (pid 260) 1,078K: storaged (pid 355) 1,036K: drmserver (pid 334) 1,025K: android.hardware.sensors@2.0-service (pid 273) 997K: servicemanager (pid 185) 983K: android.hardware.graphics.allocator@4.0-service (pid 264) 976K: android.hardware.health@2.1-service (pid 266) 971K: display.output-service (pid 281) 969K: android.hardware.thermal@2.0-service.aw (pid 278) 967K: hwservicemanager (pid 186) 911K: awlogd (pid 371) 866K: android.hardware.boot@1.1-service (pid 202) 790K: android.hardware.usb@1.0-service.aw (pid 280) 789K: android.system.suspend@1.0-service (pid 201) 757K: android.hardware.memtrack@1.0-service (pid 269) 752K: vndservicemanager (pid 187) 741K: android.hardware.power-service-aw (pid 271) 731K: android.hardware.lights-service (pid 267) 696K: abb (pid 3106) 641K: iptables-restore (pid 274) 626K: tee_supplicant (pid 204) 624K: ip6tables-restore (pid 275) 614K: dumpsys (pid 23192) 608K: process-tracker (pid 21860) 604K: android.hidl.allocator@1.0-service (pid 256) 589K: radio_monitor (pid 361) 580K: sh (pid 188) 568K: sh (pid 1043) 564K: lmkd (pid 184) 564K: sh (pid 21932) 548K: dom2reg (pid 360) 523K: tombstoned (pid 247) 521K: kmsgd (pid 375) 135,493K: System 135,493K: system (pid 431) 120,566K: Persistent 70,714K: com.android.systemui (pid 596) 17,198K: com.android.phone (pid 784) 16,340K: com.android.se (pid 708) 16,314K: com.softwinner.runin (pid 808) 35,980K: Persistent Service 20,343K: com.android.bluetooth (pid 22271) 15,637K: com.android.providers.media.module (pid 1066) 62,320K: Foreground 62,320K: com.android.launcher3 (pid 949 / activities) 84,975K: Visible 66,453K: com.google.android.gms.persistent (pid 11293) 18,522K: com.google.android.ext.services (pid 859) 56,003K: Perceptible 56,003K: com.google.android.inputmethod.latin (pid 1331) 28,428K: A Services 28,428K: android.process.media (pid 9670) 193,101K: Cached 34,678K: com.google.android.gms (pid 18227) 34,479K: com.google.android.apps.wellbeing (pid 16116) 33,920K: com.google.android.gms.unstable (pid 11798) 21,929K: com.google.android.apps.searchlite (pid 22535) 18,715K: com.google.process.gservices (pid 7133) 18,643K: com.google.android.permissioncontroller (pid 2457) 13,457K: com.google.android.setupwizard (pid 13521) 8,663K: com.google.android.partnersetup (pid 22436) 8,617K: com.android.printspooler (pid 22864) Total PSS by category: 178,651K: Native 177,609K: .apk mmap 123,845K: .so mmap 113,654K: Dalvik 66,372K: .art mmap 58,898K: .dex mmap 43,323K: .jar mmap 35,477K: Other mmap 26,464K: Dalvik Other 20,304K: Unknown 19,864K: Stack 13,339K: .oat mmap 6,934K: .ttf mmap 1,531K: Other dev 620K: Ashmem 0K: Cursor 0K: Gfx dev 0K: EGL mtrack 0K: GL mtrack 0K: Other mtrack Total RAM: 3,028,244K (status normal) Free RAM: 1,960,257K ( 193,101K cached pss + 878,640K cached kernel + 888,516K free) ION: 119,864K ( 14,896K mapped + 54,764K unmapped + 50,204K pools) Used RAM: 967,328K ( 706,348K used pss + 260,980K kernel) Lost RAM: 109,227K ZRAM: 3,996K physical used for 13,568K in swap (2,271,176K total swap) Tuning: 128 (large 256), oom 184,320K, restore limit 61,440K (low-ram)
요약
notion image
기본적으로 1G 가량의 메모리는 사용중이다.
 
notion image
개발자 탭에서 앱별 메모리 사용량을 보더라도 마찬가지다.
시스템 관련, 항상 실행되는 앱들의 메모리의 합이 대략 1GB 가까이 된다.

알고케어 앱 메모리 사용량

notion image
⚠️
- 유저 인원수 200~5000명 까지 늘려가며 테스트 해보았고, 몸상태 화면까지 진입한 결과다. - MPGIO 태블릿 3 + 32G 태블릿으로 테스트를 진행하였다.
⚠️
유저수는 늘더라도 가비지컬렉션이 일정 용량마다 수행되며 일정한 수준을 유지하고 있다. 몸상태 목록 진입 시 330MB 까지 잠깐 피크를 친다. 토출 화면, 결과화면 까지 플로우를 타면 400MB 내외로 예상된다.
 
 
notion image
태블릿 내에서 앱별 메모리를 살펴봐도, 유저목록 + 몸상태 진입의 경우 최대 사용량이 319MB로 나온다.

결론

  • 아무런 상용자 앱을 키지 않더라도 시스템에서 기본적으로 차지하는 메모리는 1GB 가량이다.
  • 디바이스앱에서 메모리 사용량이 많은 화면들을 쌓으며 진입했을 때 400MB 정도로 사용량이 예상된다.
  • 따라서 최악의 경우 OS 1GB + 태블릿 1GB 까지도 기술적으로 가능은 할 것으로 보인다.
  • 다만 400MB 나오던 것이 이전 최적화 시점에는 700MB가 넘게 피크가 쳤던 기록이 있는 만큼, 주기적으로 계속 메모리 최적화 태스크가 병행 되어야 한다.
  • 디바이스앱에 UI 적인 기능들이 계속 들어올 것까지 고려하면 메모리는 여유가 있는 것이 좋다.
  • 한번 결정하면 변경하기 어려운 만큼 가격적인 차이가 크지 않다면 4GB를 선택하는 것이 좋아보이나, 3GB도 타협할만한 메모리 용량으로 보인다.
    • 다만 영상에선 빨라 보이지만 실제 사용 시엔 버벅인다는 느낌이 있는데, 이는 메모리 용량 이슈보다는 CPU 성능 이슈로 생각된다.
    • 메모리 3GB + CPU 상향 이 가능하다면 이게 가장 좋은 선택지일 거 같다.
    • 📖
      메모 : CPU는 변경이 어렵다고 한다.