Тёмный

GC, ARC, RAM. Часть 1. Оперативная память / Мобильный разработчик, [RU, IT] 

Mobile Developer
Подписаться 51 тыс.
Просмотров 11 тыс.
50% 1

Всем привет. Давно хотел сделать полный разбор темы работы с оперативной памятью. Как оно устроено в iOS и в Android. Но для начала нужно погрузиться в то по каким принципам все это вообще работает, поэтому это видео об этом. Надеюсь вам понравится.
Напоминаю, что видео вначале выходят для моих патронов и спонсоров. Стать спонсором можно по ссылке ниже
===========================================
Стать Патроном канала и получить доступ к уникальному материалу
/ mobiledeveloper
Подписаться на Boosty
boosty.to/mobiledev
===========================================
Полезные статьи из мира мобильной разработки
Яндекс.Дзен - zen.yandex.ru/id/5e4aa0a9f2b9...
Teletype - teletype.in/@alexgladkov
Мобильный разработчик в других соц. сетях
=======================
Вконтакте - mdeveloper
Instagram - / nplau
Телеграм - t.me/mobiledevnews
=======================
Ставь лайк и расскажи друзьям, чтобы они тоже попробовали эту технологию

Опубликовано:

 

26 мар 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 80   
@awkwardquestion8643
@awkwardquestion8643 3 года назад
Вот это очень круто на самом деле, помню когда я первый раз сам вдруг осознал, что массив это по сути просто один за одним уложенные элементы в памяти, а индекс это на самом деле не индекс, а смещение в памяти относительно первого элемента на n байт (потому и начинается с нуля), где n это размерность одного элемента (именно поэтому нам нужно объявлять тип массива, чтобы ос знала сколько памяти под него выделить. И поэтому можно всегда обратиться к произвольному элементу. А линкедлист разбросан по памяти как попало, но из-за наличия ссылок на соседние элементы, и необходимости по ним ходить для доступа к нужному, возрастают задержки и накладные расходы, когда понял что зная в разрядности какой системы работаю, можно рассчитать объем этих накладных расходов до байта, ВОТ ТОГДА прям как будто новый мир открылся))
@MobileDeveloper
@MobileDeveloper 3 года назад
Ага, я помню меня впечатлило ещё, так а почему я кладу элементы в ArrayList и он безразмерный если массив размерный. А потом узнал, что он просто копируется в следующий массив побольше и тут я такой Аааа вон оно как сделано )
@awkwardquestion8643
@awkwardquestion8643 3 года назад
@@MobileDeveloper у меня с arraylist ещё веселее было - меня заставили написать его реализацию не подсматривая в оригинал. И что самое интересное, получилось почти 1в1 по итогу. Думаю это самый верный способ заучить конкретные коллекции, после такого наверное никогда из головы не выпадет)
@MobileDeveloper
@MobileDeveloper 3 года назад
Это где так жестко мучают?)
@awkwardquestion8643
@awkwardquestion8643 3 года назад
@@MobileDeveloper готовился к олимпиадам по программированию. На самом деле, по сравнению с тем какие там задачи встречаются, достаточно лайтовая задачка.
@MobileDeveloper
@MobileDeveloper 3 года назад
А, ну тогда да )
@nanemo6013
@nanemo6013 3 года назад
было бы неплохо разобрать тему кастом вьюх и вьюгруп
@MobileDeveloper
@MobileDeveloper 3 года назад
Есть такое в планах )
@LobanovSpace
@LobanovSpace 3 года назад
хм...
@kafychannel
@kafychannel 3 года назад
@@LobanovSpace как дела?)
@kafychannel
@kafychannel 3 года назад
@@LobanovSpace не хочется совместно поработать над проектами?
@farizmamedow2329
@farizmamedow2329 3 года назад
@@MobileDeveloper было бы круто
@user-sx2cq5yv7t
@user-sx2cq5yv7t 3 года назад
Жду продолжения!!!)))
@vooolff8091
@vooolff8091 3 года назад
Класс, понятно и интересно, жду продолжения)
@KobaltMetal
@KobaltMetal 3 года назад
огонь, давай все основы компсайнс, хотя б поверхностно
@MobileDeveloper
@MobileDeveloper 3 года назад
Постепенно доберёмся до этого )
@mikhailgureev218
@mikhailgureev218 2 года назад
Спасибо большое, классное видео!
@9etsamoe431
@9etsamoe431 3 года назад
Супер, спасибо!
@kirillsushilnikov9614
@kirillsushilnikov9614 Год назад
22:00 в следующем видео мы будем рассматривать как работает сборщик мусора, эти знания вам нужны, если вы хотите стновиться синьорами или выше. Собесят меня на джуна в 2020-м: "Как устроен сборщик мусора в Java?"
@muhammetnurchayev1514
@muhammetnurchayev1514 2 года назад
Thank you a lot for your videos!!! And yes, it will be great if you will create about computers, about how they work. Thanks!!!
@nobytrix
@nobytrix 2 года назад
Кажется я знаю, что скидывать про базовые знания тем, кто у джунах курсами в 2 месяца. Спасибо.
@slim0788
@slim0788 3 года назад
Очень интересно больше узнать про Davlik и ART
@MobileDeveloper
@MobileDeveloper 3 года назад
👌👌
@deadchannal
@deadchannal 3 года назад
Круто, и хочется об этой теме прям еще подробнее
@MobileDeveloper
@MobileDeveloper 3 года назад
Уже готов сценарий, жду оборудования и приступлю к съемкам :)
@deadchannal
@deadchannal 3 года назад
@@MobileDeveloper Вау!
@vaaskout7482
@vaaskout7482 3 года назад
Алексей, на собеседованиях спрашиваешь разницу между art и dalvik? Было бы неплохо сделать видео на эту тему
@MobileDeveloper
@MobileDeveloper 3 года назад
Привет, сделаю, да видео про JVM разные. На собеседовании от случая к случаю, если честно)
@LobanovSpace
@LobanovSpace 3 года назад
я бы тоже посмотрел
@user-ie8il9bv5k
@user-ie8il9bv5k 3 года назад
Да интересно, делай ещё 😀
@MobileDeveloper
@MobileDeveloper 3 года назад
👌👌
@codingpas
@codingpas 3 года назад
@@MobileDeveloper интересно
@smokewolfy
@smokewolfy 2 года назад
Красавчик, чётко, спасибо
@MobileDeveloper
@MobileDeveloper 2 года назад
👍👍
@inex550
@inex550 2 года назад
Жду вторую часть :)
@MobileDeveloper
@MobileDeveloper 2 года назад
Уже доступна на бусти
@LobanovSpace
@LobanovSpace 3 года назад
Ого, интересно очень
@MobileDeveloper
@MobileDeveloper 3 года назад
Спасибо
@dmitriyobidin6049
@dmitriyobidin6049 3 года назад
Понимаю, что может немного выходит за рамки видео, но при рассказе о стеке/куче неплохо было бы упомянуть о call стеке. А то новички часто не сразу въезжают, что программный стек вызовов в их отладке и хранение в стеке(про которое им затирают на лекциях) вообще как бы об одном и том же(стек фрейм и как вообще выглядит контекст выполнения в стеке). Сам в свое время просто заучивал что хранится в стеке, а что в куче, а что за стек и куча - хрен пойми. Никогда про это не спрашивали :) Сюда можно было бы про оптимизацию хвостовой рекурсии(tail call optimization) запихнуть, чтобы показать, почему рекурсии не есть всегда хорошо, если писать их не думаю об оптимизациях. Хотя многие компиляторы это уже делают за нас, знать об этом было бы неплохо :) И как раз таки из-за неправильного использования рекурсий на моем опыте возникает 90% ошибок stackoverflow.
@MobileDeveloper
@MobileDeveloper 3 года назад
Вот вы и упомянули :) Спасибо за такой обстоятельный комментарий
@idnull8434
@idnull8434 3 года назад
Очень жду продолжения. В частности хотелось бы что нибудь про утечку памяти. Как ее избежать?
@MobileDeveloper
@MobileDeveloper 3 года назад
Будет как раз в части про андроид
@LobanovSpace
@LobanovSpace 3 года назад
поддерживаю
@user-mq5wt3tv7e
@user-mq5wt3tv7e 2 года назад
Весьма доступно
@MobileDeveloper
@MobileDeveloper 2 года назад
Спасибо )
@olgafedyanova
@olgafedyanova Год назад
топовый материал. Даже для НЕ мобильщиков.
@MobileDeveloper
@MobileDeveloper Год назад
Спасибо )
@telephon3208
@telephon3208 2 года назад
надо побольше про виртуальные машины
@MobileDeveloper
@MobileDeveloper 2 года назад
Понял, принял ))
@user-pd7jj6re4n
@user-pd7jj6re4n 3 года назад
ждем разбор room!
@MobileDeveloper
@MobileDeveloper 3 года назад
Уже есть для спонсоров )
@michaelthirteenth
@michaelthirteenth 3 года назад
2:14 Долгое время считалось, что бит не делим, но советские учёные... ((:
@MobileDeveloper
@MobileDeveloper 3 года назад
Хахах)) это очень крутая шутка ))
@LobanovSpace
@LobanovSpace 3 года назад
:D
@alexandernifanin7366
@alexandernifanin7366 3 года назад
Послушал из интереса ради объектов реального мира (город и пригород). В целом похоже. Единственное, упор делался на Java, а вот iOS мало представлен, думаю, так и подписчиков можно растерять.
@MobileDeveloper
@MobileDeveloper 3 года назад
Иосников на канале очень мало к сожалению и это отчасти происходит потому что видео по иос делать дольше
@alexnerby1295
@alexnerby1295 3 года назад
Когда ждать вторую часть про утечки в Android?) Хотелось бы послушать реальные примеры оптимизации
@MobileDeveloper
@MobileDeveloper 3 года назад
Я поправился, поэтому приступаю к изготовлению видео опять )
@immortal_lnight
@immortal_lnight 2 года назад
@@MobileDeveloper оно уже есть где-то или нет?
@artyomsafonov5574
@artyomsafonov5574 2 года назад
@@MobileDeveloper привет, когда будет видео?)
@kafychannel
@kafychannel 3 года назад
Здравствуйте, Алексей, спасибо большое за видео, очень интересно! Есть вопрос: можно ли разрабатывать приложения в AS более низкой версии, есть 2 ноутбука, на первом все нормально, работать комфортно, но со вторым (более старым не так все гладко) , понимаю, что также комфортно работать с 4ГБ ОЗУ не получится, но всеже думаю более старые версии едят меньше ресурсов, будут ли они поддерживать gradle самых новых версий, библиотеки Jetpack, room, coroutine, kotlin вообщем стандартный набор, СПАСИБО (К примеру AS версии 3.3 или ниже)
@MobileDeveloper
@MobileDeveloper 3 года назад
Нет, рано или поздно вас студия будет заставлять переезжать на новое ) да и там непонятно кто из них ещё больше памяти жрет новые или старые ) далеко не со всеми проектами работать удастся и тд и тп ) поэтому 4гб канули в прошлое как это ни обидно
@kafychannel
@kafychannel 3 года назад
@@MobileDeveloper благодарю за ответ
@smokewolfy
@smokewolfy 2 года назад
Подписался
@MobileDeveloper
@MobileDeveloper 2 года назад
Спасибо )
@mrtwon8638
@mrtwon8638 3 года назад
16:25 было бы здорово послушать про art, т.к в сети не так много инфы
@MobileDeveloper
@MobileDeveloper 3 года назад
Когда-нибудь ) одним днём ))
@aleksandrzurnachyan6013
@aleksandrzurnachyan6013 3 года назад
ART VS DELVIK
@user-oc7py1vy6s
@user-oc7py1vy6s 3 года назад
Расскажите ещё что энергонезависимая память бывает нескольких типов: 1. Оперативная память 2. Кэш первого, второго и третьего уровня. Как эти типы памяти распределяются между стэком и кучей?
@MobileDeveloper
@MobileDeveloper 3 года назад
Вы про процессорный кэш? L1, L2, L3 который?
@user-oc7py1vy6s
@user-oc7py1vy6s 3 года назад
@@MobileDeveloper Да, про него. В Яве я насколько знаю нет чёткого разделения. И стэк и куча могут хранить свои данные как в кэше так и в основной оперативной памяти. Может быть в других языках это сделано по другому. Хотелось бы подробней узнать про эту тему.
@user-oc7py1vy6s
@user-oc7py1vy6s 2 года назад
@@dekus80 да, опечатка.
@shahzodabdujabborov335
@shahzodabdujabborov335 3 года назад
Ios LLVM тоже говорите следующие видео
@MobileDeveloper
@MobileDeveloper 3 года назад
Там не про LLVM будет хотя про него тоже хотелось бы сделать
@SanyaNapalm
@SanyaNapalm 2 года назад
2:15 Ха-ха :) Смешная шутка. Не слышал.
@MobileDeveloper
@MobileDeveloper 2 года назад
👍
@maksonic_official
@maksonic_official 2 года назад
где вторая часть? эмм
@MobileDeveloper
@MobileDeveloper 2 года назад
Будет.. когда-нибудь
@y9maly
@y9maly 2 года назад
12:14 кто этот мем ваще сделал, чел у которого 2 озу? у меня прям щас хром жрет 3 279мб
@MobileDeveloper
@MobileDeveloper 3 года назад
Внимание! В видео есть ошибка, которую я допустил не специально. Дело в том, что память в Android сжимается в zRam, то есть в отдельную область оперативной памяти, и в случае необходимости разжимается обратно. Более подробно про этот механизм расскажу в следующей части
Далее
кукинг с Даниилом 🥸
01:00
Просмотров 378 тыс.
Garbage Collection (Mark & Sweep) - Computerphile
16:22