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.