微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

stackoverflow怎么解决

stackoverflow怎么解决

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐