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の間で大幅な改善を達成しました。 – soc