ホームページ > バックエンド開発 > Golang > Go には真の「無限」の呼び出しスタックがあるのでしょうか?

Go には真の「無限」の呼び出しスタックがあるのでしょうか?

DDD
リリース: 2024-11-27 10:12:10
オリジナル
811 人が閲覧しました

Does Go Have a True

Go の「無限」呼び出しスタック

質問:

Go には Node.JS の「最大呼び出し」に相当するものはありますか?スタックsize"?

答え:

はい、Go には最大コール スタック サイズがありますが、Node.JS とは異なり、固定された制限ではありません。 Go では、ゴルーチンは必要に応じてスタック サイズを動的に拡大します。これは「無限」のコール スタックの印象を与えますが、それでも基礎となるスタック メモリ制限の影響を受けます。

質問:

コール スタックの最大サイズはどれくらいですか? Go では?

答え:

最大Go の呼び出しスタックのサイズは、実行時環境によって決まります。通常は数百 MB、場合によっては 1 GB にもなります。 Go プレイグラウンドには 250MB の制限がありますが、一般的な Linux マシンでは約 1 GB です。

質問:

潜在的に大きな数値を含む再帰コードを使用しています。の通話アンチパターン?

答え:

多数の呼び出しで再帰コードを使用すると、スタックが枯渇する可能性があります。本当に再帰が必要な問題に対処している場合を除き、これはお勧めできません。代わりに反復の使用を検討するか、深いネストに依存しない他の設計パターンを検討してください。

追加メモ:

  • 提供された例の run 関数再帰の深さがスタック メモリの制限を超えると、最終的にはスタック オーバーフローで失敗します。
  • Dave Cheney は、このトピックに関する優れたリソースを提供しています。 「Goroutine のスタックが無限なのはなぜですか?」

以上がGo には真の「無限」の呼び出しスタックがあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート