Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
22 слайда
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
344.00 kB
Просмотров:
69
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Протекающие абстракции Или](/documents_6/e01a5bdf41187970a760dc6403658273/img0.jpg)
Содержание слайда: Протекающие абстракции
Или
зачем современному программисту знать все эти низкоуровневые детали
№2 слайд![Что пишет типичный](/documents_6/e01a5bdf41187970a760dc6403658273/img1.jpg)
Содержание слайда: Что пишет типичный современный программист
№3 слайд![Что пишет типичный](/documents_6/e01a5bdf41187970a760dc6403658273/img2.jpg)
Содержание слайда: Что пишет типичный современный программист
№4 слайд![А то и еще хуже](/documents_6/e01a5bdf41187970a760dc6403658273/img3.jpg)
Содержание слайда: А то и еще хуже
№5 слайд![На самом деле все еще хуже](/documents_6/e01a5bdf41187970a760dc6403658273/img4.jpg)
Содержание слайда: На самом деле все еще хуже
№6 слайд![И как с этим теперь жить? Я](/documents_6/e01a5bdf41187970a760dc6403658273/img5.jpg)
Содержание слайда: И как с этим теперь жить?
«Я лучше буду знать что-то одно, но буду знать это хорошо»
«Пусть за меня думает компьютер, я буду решать только высокоуровневые вопросы»
«Преждевременная оптимизация – корень всех зол»
«Будет тормозить – будем думать»
№7 слайд![Протекающие абстракции Leaky](/documents_6/e01a5bdf41187970a760dc6403658273/img6.jpg)
Содержание слайда: Протекающие абстракции
Leaky abstraction © Joel Spolsky, http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Что же может протечь?
Проблемы с безопасностью
Проблемы с производительностью
Ошибки
Документированные особенности реализации
№8 слайд![Например Transmission Control](/documents_6/e01a5bdf41187970a760dc6403658273/img7.jpg)
Содержание слайда: Например
Transmission Control Protocol
Абстракция надежного соединения через ненадежную сеть
Реальная сеть теряет пакеты или доставляет их не по порядку
TCP имитирует надежное соединение
№9 слайд![Но TCP использует](/documents_6/e01a5bdf41187970a760dc6403658273/img8.jpg)
Содержание слайда: Но
TCP использует подтверждения, таймауты и повторную передачу
TCP рвет соединение при трех последовательных таймаутах
TCP гарантирует доставку, но не гарантирует время доставки
№10 слайд![Другой пример Java C](/documents_6/e01a5bdf41187970a760dc6403658273/img9.jpg)
Содержание слайда: Другой пример
Java/C# используют сборку мусора
Полезная абстракция, которая устраняет висячие ссылки и утечки памяти
Снижение стоимости разработки от 2 до 5 раз
№11 слайд![Но Если вы не думаете, куда а](/documents_6/e01a5bdf41187970a760dc6403658273/img10.jpg)
Содержание слайда: Но
Если вы не думаете, куда (а также, когда и почему) у вас деваются объекты, вы будете делать ошибки.
В С++ и C# это будут разные ошибки.
Кстати, в Java/C# утечки памяти очень даже бывают…
№12 слайд![Exception security C style](/documents_6/e01a5bdf41187970a760dc6403658273/img11.jpg)
Содержание слайда: Exception security
C++ style
RAII (Resource allocation is initalization)
Деструкторы зовутся в конце блока
Завернуть выделяемый ресурс в объект с конструктором/деструктором, и исключения вам не страшны
№13 слайд![Пример из жизни В Android](/documents_6/e01a5bdf41187970a760dc6403658273/img12.jpg)
Содержание слайда: Пример из жизни
В Android есть две кучи
Managed heap (Dalvik)
Native heap (OpenGL/BMP)
Объектам нативной кучи надо явно звать recycle.
Куча приколов
Нативная куча кончилась, вы зовете gc, а толку нет
Утечки памяти в нативной куче
Висячие ссылки в управляемой куче
И прочие радости жизни
И все это в условиях жестко ограниченной памяти.
№14 слайд![Пример из жизни самый](/documents_6/e01a5bdf41187970a760dc6403658273/img13.jpg)
Содержание слайда: Пример из жизни (самый противный вариант)
Класс-обертка вокруг битмапа в нативной куче
Битмап большой, обертка маленькая
Насоздавали битмапов, нативная куча кончилась, а управляемая куча почти не занята.
Сборка мусора не проходит (не видит, чего собирать-то)
№15 слайд![Пример из жизни продолжение](/documents_6/e01a5bdf41187970a760dc6403658273/img14.jpg)
Содержание слайда: Пример из жизни (продолжение)
Ну давайте везде звать recycle()?
http://masterden.livejournal.com/50326.html
[]
Поэтому при работе с битмапами постоянно ставишь recycle. А вот мы и подобрались к объяснению баги, описанной в начале. Даже в доках от гугла есть пример отдачи картинки в OpenGL, где после трансфера её туда битмап "ресайклится". Ага! У меня в коде было тоже самое! Но тот самый злосчастный экран отличалcя от остальных тем, что битмапы грузил не с SD-карты, а из ресурсов прилады! А они (ресурсы) грузятся один раз на всё приложение. И, будучи поресайкленной, битмапа из ресурсов оставалась таковой до рестарта приложения
[]
№16 слайд![На самом деле все еще хуже](/documents_6/e01a5bdf41187970a760dc6403658273/img15.jpg)
Содержание слайда: На самом деле все еще хуже
Приколы вылезают не только при явном освобождении памяти
Приколы могут вылезать если вы используете два разных сборщика мусора
Например:
CLR (.Net) использует mark’n’sweep
COM (legacy VB) использует reference count
№17 слайд![В чем разница? Mark n sweep](/documents_6/e01a5bdf41187970a760dc6403658273/img16.jpg)
Содержание слайда: В чем разница?
Mark’n’sweep
Сборка мусора дорогая операция
Зовется только от горя (когда память кончилась)
Refcount
Сборка мусора происходит «сама», звать ее не надо
Никаких хуков на «что-то мы сожрали много памяти» нету
Тот же сценарий: маленькая обертка в mark’n’sweep куче вокруг большого refcount объекта
Refcount куча разрослась до хрен-знает-скольколлиона байт, а mark’n’sweep про это ни сном, ни духом
№18 слайд![Безопасность](/documents_6/e01a5bdf41187970a760dc6403658273/img17.jpg)
Содержание слайда: Безопасность
№19 слайд![Dynamic SQL, говорите?](/documents_6/e01a5bdf41187970a760dc6403658273/img18.jpg)
Содержание слайда: Dynamic SQL, говорите?
№20 слайд![Хорошие практики Ну и что?](/documents_6/e01a5bdf41187970a760dc6403658273/img19.jpg)
Содержание слайда: Хорошие практики
Ну и что? – скажут многие
Не надо знать низкоуровневые детали и не надо знать, что может протечь
Надо знать хорошие практики, как бороться с протечками
№21 слайд![Хорошие практики не панацея](/documents_6/e01a5bdf41187970a760dc6403658273/img20.jpg)
Содержание слайда: Хорошие практики не панацея
Хорошая практика: нельзя совать пальцы в розетку
№22 слайд![Во что это может вылиться](/documents_6/e01a5bdf41187970a760dc6403658273/img21.jpg)
Содержание слайда: Во что это может вылиться