Когда горутине нужно больше стека, рантайм выделяет новый в 2 раза больше, побайтово копирует содержимое старого стека и обновляет все указатели на стек. Указатели обновляются потому что адреса изменились — рантайм знает layout стека и может найти все pointer-содержащие слоты. После копирования старый стек освобождается. Это безопасно только потому что Go точно знает, где на стеке лежат указатели благодаря информации от компилятора (stack maps).
Как работает stack copying?
Senior
199 просмотровAFK Offer AI
Что такое plugin package?