Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala编译器不终止(以编程方式调用)_Scala_Scala 2.10_Scala Compiler - Fatal编程技术网

Scala编译器不终止(以编程方式调用)

Scala编译器不终止(以编程方式调用),scala,scala-2.10,scala-compiler,Scala,Scala 2.10,Scala Compiler,我正在使用以下代码以编程方式编译Scala代码: val compiler = new Global(settings, reporter) val run = new compiler.Run run compile sourceFiles.map(_.fullPath).toList 2.10 RC1编译器工作了大约三分钟,然后崩溃,而2.10无限地完成了一些CPU使用率的事情。当我通过SBT而不是通过编程方式调用编译器时,它工作正常,并且在不到一分钟的时间内编译 缩短的输出看起来像这样冗

我正在使用以下代码以编程方式编译Scala代码:

val compiler = new Global(settings, reporter)
val run = new compiler.Run
run compile sourceFiles.map(_.fullPath).toList
2.10 RC1编译器工作了大约三分钟,然后崩溃,而2.10无限地完成了一些CPU使用率的事情。当我通过SBT而不是通过编程方式调用编译器时,它工作正常,并且在不到一分钟的时间内编译

缩短的输出看起来像这样冗长-在第一行和错误之间运行三分钟:

[loaded class file C:\Program Files\scala\lib\scala-library.jar(scala/collection/mutable/StringBuilder.class) in 3ms]
Scala 2.10稳定

没有进一步的输出。1个核心的100%CPU使用率

Scala 2.10 RC1

对于RC1,我在大约3分钟后出现此错误:

error: 
     while compiling: Foo.scala
        during phase: typer
     library version: version 2.10.0-RC1
    compiler version: version 2.10.0-RC1
  reconstructed args:
应用程序崩溃前的下一个输出和最终输出是OutOfMemoryError。我不确定原因是代码本身还是编译错误。这两个选项对我来说都很奇怪,因为它是在SBT控制台上编译的,而且编译器错误不应该占用那么多内存,是吗

uncaught exception during compilation: java.lang.OutOfMemoryError
[error] (run-main) java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
    at scala.reflect.internal.Symbols$Symbol.createRefinementClassSymbol(Symbols.scala:1068)
    at scala.reflect.internal.Symbols$Symbol.newRefinementClass(Symbols.scala:406)
    at scala.reflect.internal.Types$class.refinedType(Types.scala:3504)
    at scala.reflect.internal.SymbolTable.refinedType(SymbolTable.scala:12)
    at scala.reflect.internal.Types$Type.narrow(Types.scala:459)
    at scala.reflect.internal.Types$class.specializedBy$1(Types.scala:6125)
    at scala.reflect.internal.Types$class.specializesSym(Types.scala:6129)
    at scala.reflect.internal.SymbolTable.specializesSym(SymbolTable.scala:12)
    at scala.reflect.internal.Types$$anonfun$thirdTry$1$2.apply(Types.scala:6021)
    at scala.reflect.internal.Types$$anonfun$thirdTry$1$2.apply(Types.scala:6021)
    at scala.collection.Iterator$class.forall(Iterator.scala:739)
    at scala.collection.AbstractIterator.forall(Iterator.scala:1156)
    at scala.collection.IterableLike$class.forall(IterableLike.scala:75)
    at scala.reflect.internal.Scopes$Scope.forall(Scopes.scala:44)
    at scala.reflect.internal.Types$class.thirdTry$1(Types.scala:6021)
    at scala.reflect.internal.Types$class.secondTry$1(Types.scala:5982)
    at scala.reflect.internal.Types$class.firstTry$1(Types.scala:5958)
    at scala.reflect.internal.Types$class.isSubType2(Types.scala:6101)
    at scala.reflect.internal.Types$class.isSubType(Types.scala:5710)
    at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:12)
    at scala.reflect.internal.Types$class.thirdTry$1(Types.scala:6043)
    at scala.reflect.internal.Types$class.secondTry$1(Types.scala:5982)
    at scala.reflect.internal.Types$class.firstTry$1(Types.scala:5958)
    at scala.reflect.internal.Types$class.isSubType2(Types.scala:6101)
    at scala.reflect.internal.Types$class.isSubType(Types.scala:5710)
    at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:12)
    at scala.reflect.internal.Types$class.scala$reflect$internal$Types$$specializesSym(Types.scala:6142)
    at scala.reflect.internal.Types$class.specializedBy$1(Types.scala:6125)
    at scala.reflect.internal.Types$class.specializesSym(Types.scala:6129)
    at scala.reflect.internal.SymbolTable.specializesSym(SymbolTable.scala:12)
    at scala.reflect.internal.Types$$anonfun$thirdTry$1$2.apply(Types.scala:6021)
    at scala.reflect.internal.Types$$anonfun$thirdTry$1$2.apply(Types.scala:6021)
[trace] Stack trace suppressed: run 'last compile:run' for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
    at scala.sys.package$.error(package.scala:27)
我偶然发现了。然而,我不确定我是否真的只是缺少用于编译的堆空间。没有涉及Maven,只是Scala代码和本地构建路径上的一些JAR

我正在寻找OutOfMemory错误的原因或修复错误的方法。

在JDK中使用jvisualvm.exe,我们发现编译器确实内存不足。GC在释放内存方面做得太努力了,所以精确地说,它看起来像一个无限循环:发生在符号表的哈希集被放大时


将堆大小增加到2GB解决了这个问题。

java选项应该是-Xmx1024M,而不是-Xmx:1024M。先检查一下。@RégisJean Gilles Thx。配置正确,我在帖子里拼错了。已编辑。是否尝试更新到稳定版本?“也许已经修好了。”soc试了一下。在2.10.0稳定的情况下,它不会崩溃,但会在相同的位置无限运行。您能添加一段可复制的代码吗?没有它很难找出问题所在。你是如何使它起作用的?如何从编译器中获得类加载的类?