【问题标题】:StackOverflowError in Java [duplicate]Java中的StackOverflowError [重复]
【发布时间】:2011-10-18 10:33:34
【问题描述】:

可能重复:
What is a stack overflow error?

Java中出现StackOverflowError是什么意思?

java.lang.StackOverflowError: null

【问题讨论】:

  • 发布一些代码和完整的 Stack-Trace。
  • 表示堆栈溢出。
  • 这是常用的信息。请谷歌一下。
  • @Hunter,无限循环一般不会导致堆栈溢出。
  • 在一个名为 Stack Overflow 的网站上发帖询问什么是堆栈溢出...

标签: java error-handling stack-overflow


【解决方案1】:

这意味着您将太多的帧推送到 Java 解释器堆栈上。 JVM 可以处理非常深的嵌套函数,但迟早你需要划清界限并说,“如果你嵌套的东西比这更深,你的程序可能行为不端”。你越过了那条线。

查看您是否正在使用任何递归函数调用,然后将它们重写为循环等效项(如有必要)。不必要的递归函数是引发堆栈溢出异常的 90%。另外,请记住,Java(还没有)优化尾端递归(这是其他环境避免堆栈溢出/失控堆栈增长的方式)。

【讨论】:

    【解决方案2】:

    这意味着堆栈(系统跟踪已执行内容的方式)已溢出(尝试放入的数量超过了允许的数量)。这通常意味着您有一个无法控制地调用自身的递归操作。

    【讨论】:

      【解决方案3】:

      通常意味着有一个递归函数,其中结束条件永远不会发生。它运行,填充堆栈,直到你得到一个 StackOverflowError。

      【讨论】:

        【解决方案4】:

        根据Java API Documentations for the StackOverflowError class,“当由于应用程序递归太深而发生堆栈溢出时”抛出此错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-26
          • 1970-01-01
          • 1970-01-01
          • 2022-01-05
          • 2013-08-06
          • 1970-01-01
          相关资源
          最近更新 更多