SlideShare a Scribd company logo
Links:
• Посмотрите первые 2 минуты этой сессии перед тем как приступать к любой оптимизации

E
ffi
cient Interactions with Frameworks

https://developer.apple.com/wwdc17/244

• Больше информации про инструменты работы с memgraph и демонстрация их использования

iOS Memory Deep Dive

https://developer.apple.com/wwdc18/416

• Как работать с картинками загружаемыми из сети (asset-ы не нуждаются в подобных оптимизациях)

Image and Graphics Best Practices

https://developer.apple.com/wwdc18/219

• Как писать регрессионные тесты на memory footprint 

Detect and diagnose memory issues

https://developer.apple.com/wwdc21/10180

• Если хочется узнать почему как работает кэш при работе с файловой системой и CoreData

Optimizing Storage in Your App

https://developer.apple.com/wwdc19/419

• Core Data – не панацея, доклад за пределами оптимизаций “из коробки”

Блеск и нищета key-value-базы данных LMDB в мобильной разработке:

https://www.youtube.com/watch?v=-JBBlB0uTsU

• Подробнее про оптимизацию алгоритмов компрессии в системных библиотеках

Low Energy, High Performance: Compression and Accelerate

https://developer.apple.com/wwdc15/712

• Если вам интересно узнать о внутреннем устройстве аллокаторов

What Programmers Should Know About Memory Allocation

https://www.youtube.com/watch?v=gYfd25Bdmws

• Изучение Data Oriented Design можно начать с вики

https://en.wikipedia.org/wiki/Data-oriented_design

• Частично актуальный гайд Code Size Performance Guidelines

https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/CodeFootprint.html

• Memes Copilot https://inspirobot.me
🧬 iOS Platform
telegram: @resultBuilder
Как остаться в светлой
памяти: доклад о том, почему
наши приложения вылетают
Meme Copilot
The gap between processor and memory speeds
Agenda
🗃 Что и как наполняет оперативную память устройства

🪨 Нужно оптимизировать использование памяти если…

🔎 В поисках чего-то весомого

🤷 У нас проблема, что делать дальше?

💩 Common Causes 👍 Best Practices
Memory footprint of a program
• Оперативная память – это
бесконечная
последовательность байт в
непрерывном виртуальном
адресном пространстве
• compressed memory / swap
squeeze them down
Как понять, что уже пора?
didReceiveMemoryWarning
В поисках чего-то весомого
Открыли экран
З
а
к
р
ы
л
и
э
к
р
а
н
Leak
• vmmap - Display the virtual
memory regions allocated in a
process

• heap - List all the malloc-allocated
bu
ff
ers in the process's heap

• leaks - Search a process's memory
for unreferenced malloc bu
ff
ers

• malloc_history - Show the malloc
and anonymous VM allocations that
the
• vmmap - Creation

• heap - Size

• leaks - Reference

• malloc_history - Size
🏁 vmmap -summary
iOS Memory Deep Dive (2018)
У нас проблема, что делать
дальше?
Catch out of memory warning?
Unload resources?
¯_(ツ)_/¯
Common Causes
Best Practices
Downsampling
Компрессия цвета
Compression
Delivery и Intermediary форматы
Сохраняем чистоту нашей памяти
Пишем код “with performance in mind”
Оптимизируем БД
Блеск и нищета key-value-базы данных LMDB в мобильной разработке
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают" / Михаил Харитончик (Сбер Онлайн)
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают" / Михаил Харитончик (Сбер Онлайн)

More Related Content

What's hot

Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
Maria Kuneva
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
DevGAMM Conference
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Pavel Dovbush
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
Roman_Lut
 
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4rit2011
 
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипенияАрхитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Roman_Lut
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонент
DevGAMM Conference
 
Java Memory Model. Quick introduction.
Java Memory Model. Quick introduction.Java Memory Model. Quick introduction.
Java Memory Model. Quick introduction.
Yury Kisliak
 
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
Zillion Whales: как отрисовать 12 000 спрайтов в UnityZillion Whales: как отрисовать 12 000 спрайтов в Unity
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
Sasha Semenov
 
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
SQALab
 
трики разработчика мобильных игр
трики разработчика мобильных игртрики разработчика мобильных игр
трики разработчика мобильных игрAlexander Degtyarev
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
Moving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projectsMoving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projects
DevGAMM Conference
 
Dynamic Memory в Windows Server 2008 R2 SP1
Dynamic Memory в Windows Server 2008 R2 SP1Dynamic Memory в Windows Server 2008 R2 SP1
Dynamic Memory в Windows Server 2008 R2 SP1Andrey Beshkov
 
Алексей Алексеев ”Blitz-доклад”/ Wargaming
Алексей Алексеев ”Blitz-доклад”/ WargamingАлексей Алексеев ”Blitz-доклад”/ Wargaming
Алексей Алексеев ”Blitz-доклад”/ Wargaming
WG_ Events
 
Windows at Mac / Windows на мак
Windows at Mac / Windows на макWindows at Mac / Windows на мак
Windows at Mac / Windows на мак
Kyiv Maker Faire
 
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое злоОмские ИТ-субботники
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighLoad2009
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Ontico
 

What's hot (20)

Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
 
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипенияАрхитектура современного 3 d движка: Разработка Xenus: Точка кипения
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонент
 
Java Memory Model. Quick introduction.
Java Memory Model. Quick introduction.Java Memory Model. Quick introduction.
Java Memory Model. Quick introduction.
 
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
Zillion Whales: как отрисовать 12 000 спрайтов в UnityZillion Whales: как отрисовать 12 000 спрайтов в Unity
Zillion Whales: как отрисовать 12 000 спрайтов в Unity
 
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
Внутренние «облака» для тестирования ПО: как их создавать и как использовать ...
 
трики разработчика мобильных игр
трики разработчика мобильных игртрики разработчика мобильных игр
трики разработчика мобильных игр
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Moving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projectsMoving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projects
 
Dynamic Memory в Windows Server 2008 R2 SP1
Dynamic Memory в Windows Server 2008 R2 SP1Dynamic Memory в Windows Server 2008 R2 SP1
Dynamic Memory в Windows Server 2008 R2 SP1
 
Алексей Алексеев ”Blitz-доклад”/ Wargaming
Алексей Алексеев ”Blitz-доклад”/ WargamingАлексей Алексеев ”Blitz-доклад”/ Wargaming
Алексей Алексеев ”Blitz-доклад”/ Wargaming
 
Windows at Mac / Windows на мак
Windows at Mac / Windows на макWindows at Mac / Windows на мак
Windows at Mac / Windows на мак
 
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo Os
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
 

Similar to "Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают" / Михаил Харитончик (Сбер Онлайн)

[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoFAleksey Shipilev
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  МоскалёвПереводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Yandex
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Intersog
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7
Aleksey Bragin
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
Alexander Syrotenko
 
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
SQALab
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
Экосистемные Проекты Фрии
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
Tatyanazaxarova
 
Хитрости и грабли iOS разработки
Хитрости и грабли iOS разработкиХитрости и грабли iOS разработки
Хитрости и грабли iOS разработки
Any Void
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
OdessaJS Conf
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev
 
Dell Foglight сегодня и завтра. Планы развития
Dell Foglight сегодня и завтра. Планы развитияDell Foglight сегодня и завтра. Планы развития
Dell Foglight сегодня и завтра. Планы развития
BAKOTECH
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиAndrey Akulov
 

Similar to "Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают" / Михаил Харитончик (Сбер Онлайн) (20)

[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  МоскалёвПереводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Хитрости и грабли iOS разработки
Хитрости и грабли iOS разработкиХитрости и грабли iOS разработки
Хитрости и грабли iOS разработки
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
Mihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine LearningMihail Zachepilo - WebAssembly powered Machine Learning
Mihail Zachepilo - WebAssembly powered Machine Learning
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Dell Foglight сегодня и завтра. Планы развития
Dell Foglight сегодня и завтра. Планы развитияDell Foglight сегодня и завтра. Планы развития
Dell Foglight сегодня и завтра. Планы развития
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памяти
 

"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают" / Михаил Харитончик (Сбер Онлайн)

  • 1. Links: • Посмотрите первые 2 минуты этой сессии перед тем как приступать к любой оптимизации
 E ffi cient Interactions with Frameworks
 https://developer.apple.com/wwdc17/244 • Больше информации про инструменты работы с memgraph и демонстрация их использования
 iOS Memory Deep Dive
 https://developer.apple.com/wwdc18/416 • Как работать с картинками загружаемыми из сети (asset-ы не нуждаются в подобных оптимизациях)
 Image and Graphics Best Practices
 https://developer.apple.com/wwdc18/219 • Как писать регрессионные тесты на memory footprint 
 Detect and diagnose memory issues
 https://developer.apple.com/wwdc21/10180 • Если хочется узнать почему как работает кэш при работе с файловой системой и CoreData
 Optimizing Storage in Your App
 https://developer.apple.com/wwdc19/419 • Core Data – не панацея, доклад за пределами оптимизаций “из коробки”
 Блеск и нищета key-value-базы данных LMDB в мобильной разработке:
 https://www.youtube.com/watch?v=-JBBlB0uTsU • Подробнее про оптимизацию алгоритмов компрессии в системных библиотеках
 Low Energy, High Performance: Compression and Accelerate
 https://developer.apple.com/wwdc15/712 • Если вам интересно узнать о внутреннем устройстве аллокаторов
 What Programmers Should Know About Memory Allocation
 https://www.youtube.com/watch?v=gYfd25Bdmws • Изучение Data Oriented Design можно начать с вики
 https://en.wikipedia.org/wiki/Data-oriented_design • Частично актуальный гайд Code Size Performance Guidelines
 https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/CodeFootprint.html • Memes Copilot https://inspirobot.me 🧬 iOS Platform telegram: @resultBuilder
  • 2. Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают
  • 4. The gap between processor and memory speeds
  • 5. Agenda 🗃 Что и как наполняет оперативную память устройства 🪨 Нужно оптимизировать использование памяти если… 🔎 В поисках чего-то весомого 🤷 У нас проблема, что делать дальше? 💩 Common Causes 👍 Best Practices
  • 7. • Оперативная память – это бесконечная последовательность байт в непрерывном виртуальном адресном пространстве
  • 8.
  • 9. • compressed memory / swap squeeze them down
  • 10. Как понять, что уже пора?
  • 13.
  • 15.
  • 16.
  • 17. Leak
  • 18.
  • 19. • vmmap - Display the virtual memory regions allocated in a process • heap - List all the malloc-allocated bu ff ers in the process's heap • leaks - Search a process's memory for unreferenced malloc bu ff ers • malloc_history - Show the malloc and anonymous VM allocations that the
  • 20. • vmmap - Creation • heap - Size • leaks - Reference • malloc_history - Size 🏁 vmmap -summary
  • 21. iOS Memory Deep Dive (2018)
  • 22. У нас проблема, что делать дальше?
  • 23. Catch out of memory warning? Unload resources?
  • 29. Delivery и Intermediary форматы
  • 30.
  • 31.
  • 33. Пишем код “with performance in mind”
  • 34. Оптимизируем БД Блеск и нищета key-value-базы данных LMDB в мобильной разработке