rambler.ios #9: life with out of memory

42
Life with out of memory Опыт LiveJournal Денис Батвинкин Rambler&Co

Upload: ramblerco

Post on 23-Jan-2018

162 views

Category:

Technology


4 download

TRANSCRIPT

Life with out of memoryОпыт LiveJournal

Денис Батвинкин Rambler&Co

100% OOM-Free Сессии2

Один из первых релизовTitle

April

OO

M-F

ree

Sess

ion

40,00

55,00

70,00

85,00

100,00

iPhone5S iPhone7 iPhone 4S iPad2

51

79

94

87

3

4

Адресное пространство приложения

Kernal space

Stack space

User space

6

Адресное пространство приложения

Kernal space

Stack space

User space

(Virual memory)

Kernal space

Stack space

User space

App space

Virtual memory

7

Адресное пространство приложения

Kernal space

Stack space

User space

Kernal space

Stack space

User space

App space

Kernal space

Stack space

User space

Free App space

Used space App space

Virtual memory

8

Кейс Realm c mmap9

Jettison - memory hunter

11

18

100

Score foreground

app

Score suspended

app

12

xnu kernel событие

NOTE_VM_PRESSURE

13

didReceiveMemoryWarningUIKit событие

xnu kernel событие

NOTE_VM_PRESSURE

14

No pressure, Mon!http://newosxbook.com/articles/MemoryPressure.html

15

Инструменты для решения проблемы

• Allocations, Leaks и Time Profiler

• applicationDidReceiveMemoryWarning и didReceiveMemoryWarning

• Краш-репортеры Testflight, Crashlytics, Hockeyapp

• JRFMemoryNoodler, TBOOMDetector

17

Инструменты для решения проблемы

• Allocations, Leaks и Time Profiler

• applicationDidReceiveMemoryWarning и didReceiveMemoryWarning

• Краш-репортеры Testflight, Crashlytics, Hockeyapp

• JRFMemoryNoodler, TBOOMDetector

18

Инструменты для решения проблемы

• Allocations, Leaks и Time Profiler

• applicationDidReceiveMemoryWarning и didReceiveMemoryWarning

• Краш-репортеры Testflight, Crashlytics, Hockeyapp

• JRFMemoryNoodler, TBOOMDetector

19

Логи Testflight

20

Лог OOM

21

Лог OOM

Crash

22

Crash Reports сервисы

24

https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/

Reducing FOOMs in the Facebook iOS app

26

Инструменты для решения проблемы

• Allocations, Leaks и Time Profiler

• applicationDidReceiveMemoryWarning и didReceiveMemoryWarning

• Краш-репортеры Testflight, Crashlytics, Hockeyapp

• JRFMemoryNoodler, TBOOMDetector

19

TBOOMDetector JRFMemoryNoodler

Определяют OOM событие во время следующего запуска

27

Проблемы которые мы решили до первого релиза

• Блюр на экране поста

• Экраны при рекурсивном переходе по навигейшен стеку

• Большие изображения в постах

• Получение больших объемов данных с сервера

29

Супер стабильное приложение

VIPER

30

Супер стабильное приложение и команда

31

Егор

Катя

Бэкенд

АПИ

Вадим

Настя

ТЗ

Миша

Костя

Дима

Кто-то с чердака

LiveJournal

Title

April

OO

M-F

ree

Sess

ion

40,00

55,00

70,00

85,00

100,00

iPhone5S iPhone7 iPhone 4S iPad2

80

92

9998

32

Слабые места: GIF и UIWebView

33

Паттерн Producer/Consumer

producer Consumer

Image buffer

THREAD1 THREAD1 34

http://engineering.flipboard.com/2014/05/animated-gif

GIFS

35

Очистка кеша для результатов запроса и картинок

36

Title

May

OO

M-F

ree

Sess

ion

40,00

55,00

70,00

85,00

100,00

iPhone5S iPhone7 iPhone 4S iPad2

8589

9898

37

Аналитика для Answers

38

Создание файл логгера

39

Лог процессора и памяти

40

В этот раз с памятью все ок

41

Причина всех бед - RESTKit

42

Выводы

• Используйте все доступные способы обнаружения ошибок

• Не всегда решение бывает явное

• Проводите бета тестирование вашего приложения

• Не используйте RESTKit в ваших приложениях

43

https://forums.developer.apple.com/thread/45177

Иногда наше приложение ниучем не уиновато

44