StackOverflowErrorを取得する前に、コールスタックにどれだけ深く入る必要がありますか?答えはプラットフォームに依存していますか?Javaコールスタックの最大深度はどれくらいですか?
答えて
スタックに割り当てられている仮想メモリの量によって異なります。
http://www.odi.ch/weblog/posting.php?posting=411
あなたは-Xss
VMパラメータを使用してまたはThread(ThreadGroup, Runnable, String, long)
コンストラクタに合わせ、これをすることができます。
そしておそらくあなたが置いているスタックフレームのサイズですか? – duffymo
制限は、関数のスタック使用量によっても異なります。 –
もしXssについて言及しなければ、それは? –
スタックサイズは-Xss
コマンドラインスイッチで設定できますが、経験則としては十分深く、何千もの呼び出しではないにしても数百もの深い呼び出しです。 (デフォルトはプラットフォームに依存しますが、ほとんどのプラットフォームで少なくとも256kです)。
スタックオーバーフローが発生した場合、コードのエラーの99%が原因です。
システムでテストした結果、一定の値が見つからない場合は、8900コール後にスタックオーバーフローが発生することがあります。
public class MainClass {
private static long depth=0L;
public static void main(String[] args){
deep();
}
private static void deep(){
System.err.println(++depth);
deep();
}
}
は、これら二つのコールの比較:
(1)静的メソッド:別のクラスを使用して
public static void main(String[] args) {
int i = 14400;
while(true){
int myResult = testRecursion(i);
System.out.println(myResult);
i++;
}
}
public static int testRecursion(int number) {
if (number == 1) {
return 1;
} else {
int result = 1 + testRecursion(number - 1);
return result;
}
}
//Exception in thread "main" java.lang.StackOverflowError after 62844
(2)非静的メソッド:
public static void main(String[] args) {
int i = 14400;
while(true){
TestRecursion tr = new TestRecursion();
int myResult = tr.testRecursion(i);
System.out.println(myResult);
i++;
}
}
//Exception in thread "main" java.lang.StackOverflowError after 14002
テスト再帰クラスました唯一の方法としてpublic int testRecursion(int number) {
。
- 1. 緯度と経度の最大長はどれくらいですか?
- 2. Firestoreの最大ネスト深度
- 3. 最大再帰深度エラー?
- 4. .NETのTimerの最大精度はどれくらいですか?
- 5. python 1000の最大再帰深度はなぜですか?
- 6. memcachedの最大鍵長と最大サイズはどれくらいですか?
- 7. loadrunnerのパラメータの最大長はどれくらいですか?
- 8. elasticsearchのキーワードタイプの最大長はどれくらいですか?
- 9. RのURLの最大長はどれくらいですか?
- 10. MVC.NETでの最大ページ描画速度はどのくらいですか?
- 11. plistの最大容量はどれくらいですか?
- 12. lokijs.jsの最大ストージサイズはどれくらいですか?
- 13. mongodbクエリの最大長はどれくらいですか?
- 14. MATLABの最大ボーレートはどれくらいですか?
- 15. ENUM値の最大長はどれくらいですか?
- 16. iPadアプリ名の最大長はどれくらいですか?
- 17. webRTCデータチャネルメッセージの最大サイズはどれくらいですか?
- 18. NSStringオブジェクトの最大長はどれくらいですか?
- 19. SockJSメッセージの最大サイズはどれくらいですか?
- 20. wordnet 3.0タクソノミの最大深度
- 21. C++とjavaのマップオブジェクトの最大サイズはいくらですか?
- 22. 最大コールスタックが超過
- 23. これらの各ケースでの最大ファイルサイズはどれくらいですか?
- 24. 最大再帰深度?どのように防止する?
- 25. 意思決定木と最大深度
- 26. Djangoチュートリアル最大深度再帰
- 27. なぜ「最大再帰深度を超えていますか」
- 28. コンパイラインライン関数の深さはどれくらいですか?
- 29. 8086のセグメントの最大サイズと最小サイズはどれくらいですか?
- 30. コンストラクタをコピーする深さはどれくらいですか
密接に関連しています:http://stackoverflow.com/questions/794227/how-to-know-about-outofmemory-or-stackoverflow-errors-ahead-of-time – finnw
これは良い質問ですから、タイトルを、意味とより明確に関連していると感じるものに更新しました。 (以前は、実行時にキャプチャした*特定のスタックの深さを指していると思っていました)。あなたが同意しないならば、それを元に戻してください。 –
@Andrzej - 異議はありません。 – ripper234