[解決済み] StackOverflowErrorとは何ですか?
質問
とは何ですか?
StackOverflowError
また、その原因や対処法についても教えてください。
解決方法は?
パラメータとローカル変数の割り当ては スタック (参照型の場合、オブジェクトは ヒープ で、スタック内の変数がヒープ上のそのオブジェクトを参照する)。スタックは通常 アッパー のアドレス空間の端にあり、使い切ると ボトム のアドレス空間(つまり、ゼロの方向)。
また、あなたのプロセスは ヒープ に住んでいます。 ボトム プロセスの末尾に位置します。メモリを割り当てると、このヒープがアドレス空間の上端に向かって大きくなっていきます。このように、ヒープが大きくなる可能性があります。 衝突します。 とスタック(ちょっと地殻変動に似ている!!)の間に挟まれます。
スタックオーバーフローの一般的な原因は 悪い再帰呼び出し . 一般的には、再帰関数が正しい終了条件を持っていないために、永遠に自分自身を呼び出し続けることになる場合に起こります。また、終了条件が正しい場合でも、それを満たすまでにあまりにも多くの再帰的呼び出しを必要とすることが原因である場合もあります。
しかし、GUIプログラミングを用いると、このように 間接再帰 . 例えば、アプリケーションがペイントメッセージを処理している間に、システムが別のペイントメッセージを送信するための関数を呼び出すことがあります。これは、あなた自身が明示的に呼び出したのではなく、OS/VMがあなたの代わりに呼び出したのです。
これに対処するためには、自分のコードを調べる必要があります。もし、自分自身を呼び出す関数があるのなら、終了条件があるかどうかチェックしてください。そうでなければ、再帰的に呼び出された関数に目に見える変化はなく、終了条件は役に立ちません。また、有効な終了条件に達する前にスタックスペースが不足する可能性があることに注意してください。
明らかに再帰的な関数がない場合、次のようなライブラリ関数を呼び出していないか確認してください。 間接的に が呼び出されることになります (上記の暗黙の了解のような場合)。
関連
-
JSPで「リストが型解決できない!」の解決方法
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] java.lang.OutOfMemoryError "に対処する。PermGen space "エラーに対処する
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Javaクラスローダーにソースコードから潜り込む
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
このラインで複数のマーカーを解決する方法
-
[解決済み】Stack Overflowのエラーは実際に何が原因なのでしょうか?重複