TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Flutter Pulse

5 Aug, 11:30

Open in Telegram Share Report

🧠 Внутри 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
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot