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. .NETのTimerの最大精度はどれくらいですか?
- 3. wordnet 3.0タクソノミの最大深度
- 4. MVC.NETでの最大ページ描画速度はどのくらいですか?
- 5. iPadアプリ名の最大長はどれくらいですか?
- 6. ENUM値の最大長はどれくらいですか?
- 7. mongodbクエリの最大長はどれくらいですか?
- 8. SockJSメッセージの最大サイズはどれくらいですか?
- 9. webRTCデータチャネルメッセージの最大サイズはどれくらいですか?
- 10. NSStringオブジェクトの最大長はどれくらいですか?
- 11. plistの最大容量はどれくらいですか?
- 12. なぜ「最大再帰深度を超えていますか」
- 13. C++とjavaのマップオブジェクトの最大サイズはいくらですか?
- 14. これらの各ケースでの最大ファイルサイズはどれくらいですか?
- 15. コンパイラインライン関数の深さはどれくらいですか?
- 16. コンストラクタをコピーする深さはどれくらいですか
- 17. ブラウザのURLの最大長はどのくらいですか?
- 18. 東京キャビネットの最大サイズはどのくらいですか?
- 19. ファイルの最大数はどのくらいですか?
- 20. ハッシュテーブルの最大サイズはどのくらいですか?
- 21. xmlhttprequestレベル2の最大ファイルアップロードサイズはどのくらいですか?
- 22. codeigniterの最大URI長はどのくらいですか?
- 23. 深度BSTreeノード(java)
- 24. プロセスのPIDの最大可能長はどれくらいですか? (64ビット)
- 25. Pythonの属性名の最大長はどれくらいですか?
- 26. csvファイルの列の最大長はどれくらいですか?
- 27. Facebookの名前の最大長はどれくらいですか?
- 28. 現代GPUのテクスチャメモリの最大サイズはどれくらいですか?
- 29. ウェブページのコンテンツ領域の最大幅はどれくらいですか?
- 30. iPhone/Androidアプリのログファイルの最大サイズはどれくらいですか?
密接に関連しています:http://stackoverflow.com/questions/794227/how-to-know-about-outofmemory-or-stackoverflow-errors-ahead-of-time – finnw
これは良い質問ですから、タイトルを、意味とより明確に関連していると感じるものに更新しました。 (以前は、実行時にキャプチャした*特定のスタックの深さを指していると思っていました)。あなたが同意しないならば、それを元に戻してください。 –
@Andrzej - 異議はありません。 – ripper234