Junior — Middle
Aké dôsledky nastanú, ak zásobník aktuálnej goroutine prekročí svoj limit?
sobes.tech AI
Odpoveď od AI
Ak je zásobník aktuálnej goroutine v Go prekročený, dôjde k automatickému rozšíreniu zásobníka. Na rozdiel od tradičných vlákien s pevnou veľkosťou zásobníka je zásobník goroutine dynamický a začína s malou veľkosťou (zvyčajne 2 KB) a podľa potreby sa zväčšuje.
Dôsledky:
- Obsah starého zásobníka je skopírovaný do nového, väčšieho.
- To môže spôsobiť malé oneskorenie počas rozšírenia.
- Ak sa zásobník nedá rozšíriť (napríklad kvôli vyčerpaniu pamäte), program môže spustiť panic s chybou "runtime: goroutine stack exceeds limit".
Týmto spôsobom prekročenie limitu zásobníka nevedie k okamžitému zrúteniu, ale k dynamickému zväčšeniu, ktoré v extrémnych podmienkach môže spôsobiť panic.