タグ付けされた質問 「stack-overflow」

このウェブサイトではありません!コールスタックにプッシュするアイテムが多すぎるために発生するエラーには、このタグを使用します。このウェブサイトに関して質問がある場合は、https://meta.stackoverflow.comにアクセスしてください。



6
Pythonは末尾再帰を最適化しますか?
次のエラーで失敗する次のコードがあります。 RuntimeError:再帰の最大深度を超えました これを書き直して、末尾再帰の最適化(TCO)を可能にしようとしました。TCOが発生した場合、このコードは成功したはずです。 def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) PythonはどのタイプのTCOも実行しないと結論付けるべきでしょうか、それとも単に異なる方法で定義する必要があるだけでしょうか?

9
Javaスタックサイズを増やす方法
この質問をして、JVMのランタイムコールスタックサイズを増やす方法を知りました。私はこれに対する答えを得ました。また、Javaが大規模なランタイムスタックが必要とされる状況をどのように処理するかに関連する多くの有用な答えとコメントも得ました。質問の回答をまとめました。 もともとは、JVMスタックサイズを増やして、プログラムをなしで実行するようなプログラムにしたかったのStackOverflowErrorです。 public class TT { public static long fact(int n) { return n < 2 ? 1 : n * fact(n - 1); } public static void main(String[] args) { System.out.println(fact(1 << 15)); } } 対応する構成設定は、java -Xss...十分に大きな値を持つコマンドラインフラグです。TT上記のプログラムの場合、OpenJDKのJVMでは次のように機能します。 $ javac TT.java $ java -Xss4m TT 回答の1つは、-X...フラグは実装に依存することも指摘しています。使っていた java version "1.6.0_18" OpenJDK …

2
#include <string>がスタックオーバーフローエラーを防ぐのはなぜですか?
これは私のサンプルコードです: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyClass { string figName; public: MyClass(const string&amp; s) { figName = s; } const string&amp; getName() const { return figName; } }; ostream&amp; operator&lt;&lt;(ostream&amp; ausgabe, const MyClass&amp; f) { ausgabe &lt;&lt; f.getName(); return ausgabe; } int main() { MyClass f1("Hello"); cout …

9
C#はスタックオーバーフロー例外をキャッチします
スタックオーバーフロー例外をスローするメソッドを再帰的に呼び出しています。最初の呼び出しはtry catchブロックで囲まれていますが、例外はキャッチされていません。 スタックオーバーフロー例外は特別な方法で動作しますか?例外を適切にキャッチ/処理できますか? 関連するかどうかはわかりませんが、追加情報: メインスレッドで例外がスローされない コードが例外をスローしているオブジェクトは、Assembly.LoadFrom(...)。CreateInstance(...)によって手動でロードされます

6
Chrome / jQuery Uncaught RangeError:最大コールスタックサイズを超えました
Chromeで「Uncaught RangeError:Maximum call stack size超過」というエラーが表示されます。ここに私のjQuery関数があります $('td').click(function () { if ($(this).context.id != null &amp;&amp; $(this).context.id != '') { foo($('#docId').val(), $(this).attr('id')); } return false; }); ページには数万のセルがあることに注意してください。ただし、私は通常、スタックオーバーフローを再帰に関連付けます。この場合、私が見る限り、何もありません。 このようなラムダを作成すると、スタックに大量のものが自動的に生成されますか?それを回避する方法はありますか? 現時点での唯一の回避策は、HTMLをレンダリングするときに各セルでonclickイベントを明示的に生成することです。これにより、HTMLがはるかに大きくなります。

7
この方法で4が出力されるのはなぜですか?
StackOverflowErrorをキャッチしようとすると、次のメソッドが思い浮かびました。 class RandomNumberGenerator { static int cnt = 0; public static void main(String[] args) { try { main(args); } catch (StackOverflowError ignore) { System.out.println(cnt++); } } } 今私の質問: この方法で「4」が出力されるのはなぜですか? おそらくSystem.out.println()、コールスタックに3つのセグメントが必要なためだと思いましたが、3がどこから来るのかわかりません。のソースコード(およびバイトコード)を見るとSystem.out.println()、通常、メソッドの呼び出しが3よりもはるかに多くなります(したがって、呼び出しスタックの3つのセグメントでは不十分です)。Hotspot VMが適用する最適化(メソッドのインライン化)が原因である場合、別のVMで結果が異なるかどうか疑問に思います。 編集: 出力は非常にJVM固有であると思われるため、 Java(TM)SEランタイム環境(ビルド1.6.0_41-b02) Java HotSpot(TM)64ビットサーバーVM(ビルド20.14-b01、混合モード)を使用して結果4を取得します この質問がJavaスタックの理解とは異なると思う理由: 私の質問はなぜcnt&gt; 0があるのか​​(明らかにSystem.out.println()スタックサイズが必要でありStackOverflowError、何かが印刷される前に別のものをスローするため)ではなく、特定の値4、それぞれ0、3、8、55または他の何かがあるのはなぜですかシステム。
111 java  jvm  stack-overflow 

5
StackOverflowErrorから回復できるのはなぜですか?
StackOverflowErrorJavaでa が発生した後でも実行を継続できることに驚いています。 私はそれStackOverflowErrorがクラスErrorのサブクラスであることを知っています。Errorクラスは、「合理的なアプリケーションがキャッチしようとしてはならない深刻な問題を示すThrowableのサブクラス」としてデクリメントされています。 StackOverflowErrorのようなエラーをキャッチすることは実際には許可されており、それを行わないことはプログラマーの判断に委ねられているため、これは規則よりも推奨事項のように聞こえます。そして、このコードをテストしたところ、正常に終了しました。 public class Test { public static void main(String[] args) { try { foo(); } catch (StackOverflowError e) { bar(); } System.out.println("normal termination"); } private static void foo() { System.out.println("foo"); foo(); } private static void bar() { System.out.println("bar"); } } どうすればいいの?StackOverflowErrorがスローされる頃には、スタックがいっぱいになっていて、別の関数を呼び出す余地がないと思います。エラー処理ブロックは別のスタックで実行されていますか、またはここで何が起こっていますか?



15
gson.toJson()はStackOverflowErrorをスローします
オブジェクトからJSON文字列を生成したいと思います。 Gson gson = new Gson(); String json = gson.toJson(item); これを実行しようとすると、次のエラーが発生します。 14:46:40,236 ERROR [[BomItemToJSON]] Servlet.service() for servlet BomItemToJSON threw exception java.lang.StackOverflowError at com.google.gson.stream.JsonWriter.string(JsonWriter.java:473) at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:347) at com.google.gson.stream.JsonWriter.value(JsonWriter.java:440) at com.google.gson.internal.bind.TypeAdapters$7.write(TypeAdapters.java:235) at com.google.gson.internal.bind.TypeAdapters$7.write(TypeAdapters.java:220) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:200) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60) at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:843) これらは私のBomItemクラスの属性です: private int itemId; private …

10
Node.js-最大コールスタックサイズを超えました
コードを実行すると、Node.jsは"RangeError: Maximum call stack size exceeded"再帰呼び出しが多すぎるために例外をスローします。Node.jsスタックサイズを増やしようとしましたが、Node.jssudo node --stack-size=16000 appがエラーメッセージなしでクラッシュします。sudoを使用せずにこれを再度実行すると、Node.jsはを出力し'Segmentation fault: 11'ます。再帰呼び出しを削除せずにこれを解決する可能性はありますか?

6
自身を要素として含むArrayListのハッシュコード
我々は見つけることができるhashcodeのをlist、自身が含まれていますかelement? 私はこれが悪い習慣であることを知っていますが、これは面接官が尋ねたものです。 次のコードを実行すると、がスローされますStackOverflowError。 public class Main { public static void main(String args[]) { ArrayList&lt;ArrayList&gt; a = new ArrayList(); a.add(a); a.hashCode(); } } ここで私は2つの質問があります: なぜStackOverflowErrorですか? この方法でハッシュコードを見つけることは可能ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.