TGViewer
BASCODE BASCODE @bascodech · 140 subscribers
Post #123 153
Указатель на локальную переменную пережил переезд стека на 2 мегабайта.

Стек горутины стартует с 2 КБ и растет удвоением. Растет он не на месте: рантайм берет новый кусок памяти, копирует туда старый целиком и чинит все указатели, которые смотрели внутрь старого.

Проверяю. Беру адрес локальной переменной, загоняю горутину в рекурсию на 20 тысяч кадров, беру адрес той же переменной снова:

адрес до переезда:  0x107b57a64f50
адрес после: 0x107b57c5ff50
сдвиг: 2076672 байт
значение x: 42


Переменная уехала на 2 МБ и осталась собой. Ни одна строчка моего кода про это не узнала.

Go про все это знает сам, компилятор оставляет карты указателей на каждый кадр. Отсюда и цена горутины в 2 КБ. Можно стартовать с крохотного стека, потому что если не хватит, он переедет.

Код замера лежит в репозитории, каталог stack_move: go run ./stack_move, адреса на твоей машине будут свои.

Механизм целиком, вместе с починкой указателей по картам компилятора, пойдет в серию статей, которую пишу на выходных. Возможно на этой неделе уже выложу 1 часть из 3.
  • 🔥 5
More from @bascodech
  1. Sep 18, 2026Мысли про дебаггинг и IDE в 2026 Вот интересная история... Расс Кокс выложил пять сессий,…
  2. Sep 14, 2026Кодить без AI сейчас как заниматься айкидо. Красиво и глубоко и десять лет до черного пояс…
  3. Sep 7, 2026Выложил свой statusline для claude code в публичный репозиторий. Лимитов у подписки три: п…
  4. Sep 5, 2026Рубрика "лысая мудрость" Как я больше года храбро готовился, но так ничего и не сделал. Вт…
  5. Sep 2, 2026Распаковал 30 релизов Go подряд, 2.9 ГБ исходников. Ради одного вопроса. Вопрос такой: поч…
  6. Aug 29, 2026Сегодня у кого-то будет распаковка :-)
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 →