Сборщик мусора в Dart: что это такое и почему это важно
Вы когда-нибудь задумывались, как язык программирования Dart управляет памятью и удаляет ненужные объекты? 🤔 Это тема, которая часто обсуждается на собеседованиях, но найти простые и понятные объяснения этой концепции довольно сложно. В этой статье мы попытаемся объяснить, что такое сборщик мусора в Dart, и почему это важно для практики.
Память компьютера можно представить как ряд ячеек, каждая из которых содержит бит (0 или 1). Процессоры работают с группами битов, и в случае 64-битных процессоров, это группы по 64 бита (8 байт). Указатель в Dart занимает 8 байт, что соответствует одному машинному слову. Указатель - это не сам адрес, а место, где этот адрес записан. Например, листок с адресом дома является указателем, а то, что на нем написано, - это и есть адрес 🏠.
Адрес может ссылаться не только на объект, но и на другие данные, такие как числа. В Dart, если значение является числом, оно хранится прямо в указателе, а если это объект, то необходимо сходить по адресу и найти объект. Последний бит в адресе играет важную роль, он указывает, является ли значение в указателе ссылкой на объект или числом. Если последний бит равен 1, то это ссылка на объект, если 0 - то это число 📝.
В Dart есть специальный тип данных - smi (small integer), который представляет собой число, умещающееся в указателе. Smi не занимает места в памяти напрямую, живет прямо в указателе, и не требует поиска по адресу. Однако сам указатель занимает 8 байт, поэтому можно считать, что любое smi занимает 8 байт 📊.
Читать здесь: ссылка
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #flutterpulsehabr #сборщикмусора #память #dartlang
Post #2927
341