Java中的StackOverflowError

时间:2011-08-02 16:50:58

标签: java error-handling stack-overflow

  

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

Java中存在StackOverflowError是什么意思?

java.lang.StackOverflowError: null

4 个答案:

答案 0 :(得分:4)

根据Java API Documentations for the StackOverflowError class,当发生堆栈溢出因为应用程序过于冗长时,会抛出此错误“。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

这意味着您已将太多帧压入Java解释器堆栈。 JVM可以处理深度很深的嵌套函数,但是迟早你需要在沙子中划出这条线并说:“如果你把东西嵌得比这更深,你的程序可能会行为不端”。你越过那条线。

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

答案 3 :(得分:1)

这意味着堆栈(系统跟踪已执行内容的方式)已经溢出(尝试放入的内容比允许的多)。这经常意味着你有一个无法控制地调用自己的递归操作。