TGViewer
Flutter Pulse Flutter Pulse @flutterpulse · 1.01K subscribers
Post #2995 363
🧠 Внутри Dart VM: как GC играет в прятки с памятью

Знаете то чувствие, когда на собеседовании спрашивают про сборщик мусора, а в голове только «ну... он собирает мусор?» 😅 Давайте разберём, как Dart на самом деле управляет памятью — без воды и лишней теории.

Указатели — не адреса, а записки с адресами
В 64-битном мире указатель — это 8 байт. Представьте: объект живет по адресу
0x00A03F50

, а в переменной лежит не сам объект, а «листочек» с этим адресом. Но Dart пошёл дальше — он использует последний бит указателя как тег 🏷️
Адрес объекта (кратен 16):     0101 0000
Dart ставит флаг «это объект»: 0101 0001  →  0x00A03F51

Если последний бит 1 — это ссылка на объект в куче. Если 0 — это Smi (Small Integer) — число, живущее прямо в указателе! Никакого перехода по адресу, никакой нагрузки на GC. Число 7 превращается в
1110

(сдвиг влево на 1), а при чтении — обратно делится на 2. Элегантно? Однозначно ✨

А как же C++ код в движке?
GC любит перемещать объекты для дефрагментации. Dart-код обновит ссылки сам, но нативный C++ не узнает о переезде 💥 Решение — Handles: двойная косвенность. C++ держит не адрес объекта, а адрес «ячейки», куда GC пишет актуальный адрес. Объект переехал — Handle обновился — C++ счастлив 🤝

Практический вывод: создавайте объекты осознанно. Каждый лишний объект — работа для GC. Числа (Smi) — бесплатны. Понимание этих механик — ваш суперпауэр для написания быстрого Flutter-кода ⚡

Полную новость читайте здесь

FlutterPulse — канал о мире Flutter!

#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #dartvm #garbagecollection #performance
More from @flutterpulse
  1. Oct 1, 2026Обзор пакетов на тему Rich Text, Markdown & HTML Editor appflowy_editor 6.2.0 Высоконастра…
  2. Oct 1, 2026Обновлённые пакеты за последние 24 часа jnigen 1.0.1 Инструмент для вызова Java API из Dar…
  3. Oct 1, 2026photo post
  4. Sep 30, 2026Как теплотехник в 50 лет стер границу между КИПиА и IT: пишем универсальный Android‑SCADA…
  5. Sep 30, 2026Обновлённые пакеты за последние 24 часа Bones_API 1.17.0 Фреймворк для создания API-бэкенд…
  6. Sep 30, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →