【问题标题】:How to increase scala stack size?如何增加scala堆栈大小?
【发布时间】:2011-09-29 07:20:13
【问题描述】:

当我执行一个 Scala 程序时,我得到一个java.lang.StackOverflowError。

我相信用-DXss=n可以设置栈大小,但是不行 在我的系统上:

  Scala compiler version 2.7.7final and
  Linux 2.6.38-8-generic #42-Ubuntu 

附加的程序见证了我系统上的问题。

// scalac StackOverflow.scala
// scala StackOverflow 6000
// scala -DXms=200M -DXmx=200M -DXss=200M StackOverflow 6000

object StackOverflow {
  def recur(k: Double): Double = {
    // check effects of various commands
    println(k)
    // try to prevent tail recursion
    if (k>0) return recur(k-1)+k/(k+1)
    else return 0.0
  }
  def main(args: Array[String]) {
    if (args.length == 0) println("Missing argument");
    val k = args(0).toInt+0.1
    recur(k)
  }
}

塞尔吉奥

【问题讨论】:

  • 您还可以将您的函数重写为尾递归,并检查编译器是否将其编译为带有@tailrec 注释的循环。
  • @Jean-Philippe: @tailrec 仅在 2.8 后可用。 @Sergio:请更新到最新版本(当前为 2.9.0.1),Scala 在 2.7 和 2.9 之间有了巨大的改进。

标签: scala stack size


【解决方案1】:

我想你想要的是scala -J-Xss200m

【讨论】:

  • 我在编译时在 Scala IDE 中遇到了 StackOverflowException。这解决了我的问题:我在 Window -> Preferences -> Scala ->Compiler->Advanced 下配置,附加命令行参数:-J-Xss256m
  • 除了上面的注释,同样的配置也需要添加到eclipse.ini中,如here所述。确保将其设置为 -Xss256m。
猜你喜欢
  • 2015-11-22
  • 2013-12-24
  • 2010-11-24
  • 2017-10-23
  • 2018-01-17
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多