コンテンツへスキップ
Java例外致命的
StackOverflowError

StackOverflowError

通常は深い再帰または無限再帰により、コールスタックが最大サイズを超えた。

jvmandroid

このエラーの原因

メソッドが適切な基底ケースなしに再帰呼び出しされている、またはメソッド間の相互再帰が無限ループを生み出している。各メソッド呼び出しがスタック領域を消費し、上限に達した。

修正方法

再帰メソッドの基底ケースを追加または修正する。再帰をイテレーションに変換する。JVM フラグ `-Xss` でスタックサイズを増やす。コンストラクターや toString メソッドでの意図しない無限再帰がないか確認する。

例

void recurse() { recurse(); }
公式ドキュメント

関連するエラーコード