Как увеличить размер стека scala?

Я получаю java.lang.StackOverflowError, когда запускаю программу Scala.

Я считаю, что размер стека можно установить с помощью -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)
  }
}

Серхио


person Sergio    schedule 06.07.2011    source источник
comment
Вы также можете переписать свою функцию, чтобы она была хвостовой рекурсией, и проверить, что компилятор компилирует ее как цикл с аннотацией @tailrec.   -  person Jean-Philippe Pellet    schedule 06.07.2011
comment
@ Жан-Филипп: @tailrec доступен только с версии 2.8. @Sergio: Пожалуйста, обновитесь до последней версии (в настоящее время 2.9.0.1), Scala получила огромные улучшения между 2.7 и 2.9.   -  person soc    schedule 06.07.2011


Ответы (1)


Я думаю, что вы хотите scala -J-Xss200m

person Joseph Shraibman    schedule 06.07.2011
comment
Я столкнулся с StackOverflowException в Scala IDE во время компиляции. Это решило мою проблему: я настроил в Window -> Preferences -> Scala -> Compiler-> Advanced, дополнительные параметры командной строки: -J-Xss256m - person Daniel Nitzan; 17.05.2017
comment
В дополнение к комментарию выше, такую ​​же конфигурацию необходимо добавить и в eclipse.ini, как описано здесь. Обязательно установите его на -Xss256m. - person Daniel Nitzan; 24.06.2017