Sobes.tech
Junior — Middle

Jaké důsledky nastanou, pokud zásobník aktuální gorutiny překročí svůj limit?

sobes.tech AI

Odpověď od AI

Pokud aktuální zásobník goroutine v Go překročí svůj limit, dojde k automatickému rozšíření zásobníku. Na rozdíl od tradičních vláken s pevnou velikostí zásobníku je zásobník goroutine dynamický a začíná s malou velikostí (obvykle 2 KB) a podle potřeby se zvětšuje.

Důsledky:

  • Obsah starého zásobníku je zkopírován do nového, většího.
  • To může způsobit malou prodlevu během rozšíření.
  • Pokud nelze zásobník rozšířit (například kvůli vyčerpání paměti), může program vyvolat panic s chybou "runtime: goroutine stack exceeds limit".

Tímto způsobem překročení limitu zásobníku nevede k okamžitému pádu, ale k dynamickému zvětšení, které v extrémních podmínkách může způsobit panic.