TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Flutter Pulse

5 Aug, 11:30

Открыть в Telegram Поделиться Пожаловаться

🧠 Внутри 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

354 0 4 1
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot