*怎么解决

*怎么解决

  • 栈溢出的可能原因:
  1. 函数递归调用层次过深 ,每调用一次,函数的参数、局部变量等信息就压一次栈,并且没有及时出栈。
  2. 局部变量体积太大
  • 分析:每一个 JVM 线程都拥有一个私有的 JVM 线程栈,用于存放当前线程的 JVM 栈帧(包括被调用函数的参数、局部变量和返回地址等)。

  • 如果某个线程的线程栈空间被耗尽,没有足够资源分配给新创建的栈帧,就会抛出 java.lang.*Error 错误。

  • 解决方案:
    1.把递归调用函数改用while或者for循环来实现 。
    2.通过尾递归优化。
    3.改用堆内存,函数里定义很大的局部变量(例如大数组),这种情况可以将局部变量改为静态变量(实质上也是全局变量)。
    4.增大栈的大小值。

上一篇:Mac iTerm2 zsh: command not found: node/npm/nvm...


下一篇:一对多关系设计中使用sortedList