Разделы презентаций


Application Memory Model

Содержание

Application Memory Model640 килобайт хватит всемПамять, что и кудаУчастки памяти вашего приложенияPagination и swappingApplication memory footprintApplication life cycle с точки зрения памятиHeap vs. StackGarbage Collection, “stop the world”Embedded systems с точки

Слайды и текст этой презентации

Слайд 1

Application Memory Model
“Journey through the dark”
Докладчик: Егор Волков
Дата: 4 июля

2016 года

Application Memory Model“Journey through the dark”Докладчик: 	Егор ВолковДата: 		4 июля 2016 года

Слайд 2Application Memory Model
640 килобайт хватит всем
Память, что и куда
Участки памяти

вашего приложения
Pagination и swapping
Application memory footprint
Application life cycle с точки

зрения памяти
Heap vs. Stack
Garbage Collection, “stop the world”
Embedded systems с точки зрения памяти
Как сделать приложение медленным?
Многопоточность и память

Application Memory Model640 килобайт хватит всемПамять, что и кудаУчастки памяти вашего приложенияPagination и swappingApplication memory footprintApplication life

Слайд 3Application Memory Model
Каждому приложению нужна память!

ОС владеет всем объёмом памяти,

распределение и выделение памяти на ней же
Приложение может при старте

запросить кусок памяти и, скорее всего, оно его получит
Память - ресурс разделяемый и ограниченный
Производительность приложения не зависит от того, сколько памяти оно использует, а от того, КАК оно её использует
Хитрые системщики придумали разные штуки, чтобы управлять памятью более эффективно. Как мы, прикладные программисты, можем свести их усилия на нет?
Ручное управление памятью - вот тебе нога, а вот дробовик
Application Memory ModelКаждому приложению нужна память!ОС владеет всем объёмом памяти, распределение и выделение памяти на ней жеПриложение

Слайд 4Application Memory Model
Память вашего приложения можно разделить на 4 части:

CODE

— сегмент кода. Содержит исполняемый код.
DATA — сегмент статических данных.

Содержит константы и прочие статические данные (вычисляемые при компиляции/сборке).
STACK — сегмент стека. Содержит данные для используемых функций (локальные переменные).
HEAP — сегмент динамических данных ("куча”). Содержит динамические данные для всей программы.
Application Memory ModelПамять вашего приложения можно разделить на 4 части:CODE — сегмент кода. Содержит исполняемый код.DATA —

Слайд 5Application Memory Model

Application Memory Model

Слайд 6Application Memory Model
Memory pagination - механизм разделения и управления памятью.

Физическая

память делится на сегменты (страницы) фиксированного размера
При изменении страницы в

памяти приложением, она помечается как “грязная” и должна быть записана на диск перед выгрузкой
Если не записать содержимое - оно исчезнет, а ОС будет очень расстроена (BSOD, kernel panic, взрыв на производстве)
Виртуальная память использует этот механизм чтобы обманывать программистов
Процесс чтения/записи и загрузки/выгрузки страниц называется свопинг (swapping)
Такое веселье делает возможным memory thrashing (пробуксовка)
Application Memory ModelMemory pagination - механизм разделения и управления памятью.Физическая память делится на сегменты (страницы) фиксированного размераПри

Слайд 7Application Memory Model

Application Memory Model

Слайд 8Application Memory Model
Application Memory Footprint

Ваше приложение занимает память. Но почему

так много?
Подозрение на memory leak
Подозрение на кривую либу
Подозрение на кривые

руки
Подозрение на несправедливость вселенной
Не аллоцируй в цикле и будешь счастлив
Application Memory ModelApplication Memory FootprintВаше приложение занимает память. Но почему так много?Подозрение на memory leakПодозрение на кривую

Слайд 9Application Memory Model
Application lifecycle

Память приложения изолирована от всей остальной памяти

средствами ОС.
Приложение старутет, ОС грузит всё, что ему нужно для

работы (код, данные, библиотеки)
Приложение получает управление, грузит всё, что считает нужным (обычно всякий мусор)
Приложение выделяет память и освобождает память по-ходу своего выполнения
Приложение запрашивает ещё памяти, ОС предоставляет (или нет) ещё памяти
По завершению выполнения память у приложения отбирают и ОС её утилизирует
Application Memory ModelApplication lifecycleПамять приложения изолирована от всей остальной памяти средствами ОС.Приложение старутет, ОС грузит всё, что

Слайд 10Application Memory Model
Heap memory versus stack memory


Application Memory ModelHeap memory versus stack memory

Слайд 11Application Memory Model
Garbage collection, “stop the world” problem

Динамическая память подвержена

фрагментации и “загрязнению”. Выход - garbage collection.
Garbage Collection - неэффективный

костыль и большущий оверхед, но мы любим его. За что?
Управление памятью - бесконечная гонка оптимизаций и глупых программистов
“Зачем мне ваще париться? Оно же само почистит!” и другие цитаты великих людей
Stop the world - решение проблем в лоб
Разные GC для разных целей (на примере Java)



Application Memory ModelGarbage collection, “stop the world” problemДинамическая память подвержена фрагментации и “загрязнению”. Выход - garbage collection.Garbage

Слайд 12Application Memory Model
Embedded systems с точки зрения памяти

Другие модели памяти

для других целей
Оптимизируем, как в старые-добрые времена! (сделать ностальгическое лицо)
Регистры!

Много их! А ещё, отдельная RAM и ROM!
EEPROM - энергонезависимо, медленно, но зато надолго*
Война с компилятором за каждый байт памяти, иногда - буквально.
Дисциплина специальной олимпиады - JavaScript on Board и Java SE Embedded (немного лучше)
Хардкорные и бородатые программеры пишут на ASM и руками ворочают байты и биты - “ганебна зрада”


Application Memory ModelEmbedded systems с точки зрения памятиДругие модели памяти для других целейОптимизируем, как в старые-добрые времена!

Слайд 13Application Memory Model
Как сделать приложение медленным?

Всегда бездумно аллоцируй большие обьекты

в цикле

Application Memory ModelКак сделать приложение медленным?Всегда бездумно аллоцируй большие обьекты в цикле

Слайд 14Application Memory Model
Как сделать приложение медленным?

Думать, что стек огромен и

создавать на нём большие штуки
Не чистить память, надеясь на ОС
Создавать/утилизировать

очень много объектов, которые дороги/долги в создании/утилизации
Игнорировать то, что возвращает функция
Писать многопоточный код с большим количеством локов и чтением/запись в память
Писать на Java/C#/Ruby/Python/JS (особенно JS!)/%languagename%


Application Memory ModelКак сделать приложение медленным?Думать, что стек огромен и создавать на нём большие штукиНе чистить память,

Слайд 15Application Memory Model
Многопоточность и память

Многопоточное программирование - суровое настоящее
Компилятор кода

на Android даже не даст вам делать клёвые штуки из

UI потока - “атата!”. Шожиделать?
Mutex, event, conditional variable - synchronization primitives
Функциональное программирование и иммутабельность немного спасает положение
Теперь нужно думать не только о памяти, но и
об обращениях к ней
Один неверный шаг и всё взорвётся - sad, but true



Application Memory ModelМногопоточность и памятьМногопоточное программирование - суровое настоящееКомпилятор кода на Android даже не даст вам делать

Слайд 16Application Memory Model
Каждому приложению нужна память!

Не получится бездумно везде тыкать

аллокации и верить в то, что вам повезёт
Компиляторы и garbage

collector’ы становятся лучше с каждым днём, а программисты - хуже
Защита от дурака в современных IDE
Помним о сущности памяти как ресурсе - она одна, приложений много
Многопоточность - на порядок больше проблем и возможностей
Извечный “CPU-2-memory” tradeoff и реальность

Application Memory ModelКаждому приложению нужна память!Не получится бездумно везде тыкать аллокации и верить в то, что вам

Слайд 17Application Memory Model
Сейчас самое время задать свой вопрос!

Application Memory ModelСейчас самое время задать свой вопрос!

Слайд 18

Application Memory Model
Спасибо за внимание!
Докладчик: Егор Волков
Дата: 7 июля 2016

года

Application Memory ModelСпасибо за внимание!Докладчик: 	Егор ВолковДата: 		7 июля 2016 года

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика