Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Rambler.iOS #9: Life with out of memory

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Nächste SlideShare
Casio Exilim desant autumn
Casio Exilim desant autumn
Wird geladen in …3
×

Hier ansehen

1 von 42 Anzeige

Rambler.iOS #9: Life with out of memory

Herunterladen, um offline zu lesen

Rambler.iOS #9: Life with out of memory (Денис Батвинкин).

Out of memory error – ошибка, о которой не стоит забывать. В докладе Денис разбирает, что такое out of memory error и почему стоит уделить этой проблеме больше внимания. Отдельное внимание уделено причинам OOM и инструментам, которые помогут ее отследить. Также на примере iOS-приложения "Livejournal" рассмотрена практика борьба с этой ошибкой.

Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.

Rambler.iOS #9: Life with out of memory (Денис Батвинкин).

Out of memory error – ошибка, о которой не стоит забывать. В докладе Денис разбирает, что такое out of memory error и почему стоит уделить этой проблеме больше внимания. Отдельное внимание уделено причинам OOM и инструментам, которые помогут ее отследить. Также на примере iOS-приложения "Livejournal" рассмотрена практика борьба с этой ошибкой.

Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Weitere von RAMBLER&Co (20)

Aktuellste (20)

Anzeige

Rambler.iOS #9: Life with out of memory

  1. 1. Life with out of memory Опыт LiveJournal Денис Батвинкин Rambler&Co
  2. 2. 100% OOM-Free Сессии 2
  3. 3. Один из первых релизов Title April OOM-FreeSession 40,00 55,00 70,00 85,00 100,00 iPhone5S iPhone7 iPhone 4S iPad2 51 79 94 87 3
  4. 4. 4
  5. 5. Адресное пространство приложения Kernal space Stack space User space 6
  6. 6. Адресное пространство приложения Kernal space Stack space User space (Virual memory) Kernal space Stack space User space App space Virtual memory 7
  7. 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
  8. 8. Кейс Realm c mmap 9
  9. 9. Jettison - memory hunter 11
  10. 10. 18 100 Score foreground app Score suspended app 12
  11. 11. xnu kernel событие NOTE_VM_PRESSURE 13
  12. 12. didReceiveMemoryWarning UIKit событие xnu kernel событие NOTE_VM_PRESSURE 14
  13. 13. No pressure, Mon! http://newosxbook.com/articles/MemoryPressure.html 15
  14. 14. Инструменты для решения проблемы • Allocations, Leaks и Time Profiler • applicationDidReceiveMemoryWarning и didReceiveMemoryWarning • Краш-репортеры Testflight, Crashlytics, Hockeyapp • JRFMemoryNoodler, TBOOMDetector 17
  15. 15. Инструменты для решения проблемы • Allocations, Leaks и Time Profiler • applicationDidReceiveMemoryWarning и didReceiveMemoryWarning • Краш-репортеры Testflight, Crashlytics, Hockeyapp • JRFMemoryNoodler, TBOOMDetector 18
  16. 16. Инструменты для решения проблемы • Allocations, Leaks и Time Profiler • applicationDidReceiveMemoryWarning и didReceiveMemoryWarning • Краш-репортеры Testflight, Crashlytics, Hockeyapp • JRFMemoryNoodler, TBOOMDetector 19
  17. 17. Логи Testflight 20
  18. 18. Лог OOM 21
  19. 19. Лог OOM Crash 22
  20. 20. https://developer.apple.com/library/content/technotes/tn2151/_index.html#// apple_ref/doc/uid/DTS40008184-CH1- Understanding and Analyzing Application Crash Reports 23
  21. 21. Crash Reports сервисы 24
  22. 22. 25
  23. 23. https://code.facebook.com/posts/1146930688654547/ reducing-fooms-in-the-facebook-ios-app/ Reducing FOOMs in the Facebook iOS app 26
  24. 24. Инструменты для решения проблемы • Allocations, Leaks и Time Profiler • applicationDidReceiveMemoryWarning и didReceiveMemoryWarning • Краш-репортеры Testflight, Crashlytics, Hockeyapp • JRFMemoryNoodler, TBOOMDetector 19
  25. 25. TBOOMDetector JRFMemoryNoodler Определяют OOM событие во время следующего запуска 27
  26. 26. Проблемы которые мы решили до первого релиза • Блюр на экране поста • Экраны при рекурсивном переходе по навигейшен стеку • Большие изображения в постах • Получение больших объемов данных с сервера 29
  27. 27. Супер стабильное приложение VIPER 30
  28. 28. Супер стабильное приложение и команда 31 Егор Катя Бэкенд АПИ Вадим Настя ТЗ М иш а Костя Дима Кто-то с чердака LiveJournal
  29. 29. Title April OOM-FreeSession 40,00 55,00 70,00 85,00 100,00 iPhone5S iPhone7 iPhone 4S iPad2 80 92 9998 32
  30. 30. Слабые места: GIF и UIWebView 33
  31. 31. Паттерн Producer/Consumer producer Consumer Image buffer THREAD1 THREAD1 34
  32. 32. http://engineering.flipboard.com/2014/05/animated-gif GIFS 35
  33. 33. Очистка кеша для результатов запроса и картинок 36
  34. 34. Title May OOM-FreeSession 40,00 55,00 70,00 85,00 100,00 iPhone5S iPhone7 iPhone 4S iPad2 85 89 9898 37
  35. 35. Аналитика для Answers 38
  36. 36. Создание файл логгера 39
  37. 37. Лог процессора и памяти 40
  38. 38. В этот раз с памятью все ок 41
  39. 39. Причина всех бед - RESTKit 42
  40. 40. Выводы • Используйте все доступные способы обнаружения ошибок • Не всегда решение бывает явное • Проводите бета тестирование вашего приложения • Не используйте RESTKit в ваших приложениях 43
  41. 41. https://forums.developer.apple.com/thread/45177 Иногда наше приложение ниучем не уиновато 44
  42. 42. d.batvinkin@rambler-co.ru

×