Почему я получаю ошибку компиляции OutOfMemoryError в Scala? - PullRequest
3 голосов
/ 04 марта 2011

Я работаю над проектом Lift и пытаюсь скомпилировать его с scala:cc и сервером компиляции scala, используя jvm args:

-Xmx1024m  -Xss20m -XX:PermSize=64M -XX:MaxPermSize=512M -XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled

Ошибка также возникает с аргументами jvm:

-Xmx1024m  -Xss20m -XX:PermSize=64M -XX:MaxPermSize=512M 

Результат:

[INFO] Compiling 16 source files to /Users/axaluss/IdeaProjects/trunk/Team_Skynet/target/classes at 1299141180948
[ERROR] java.lang.OutOfMemoryError: Java heap space
[INFO]  at scala.tools.nsc.symtab.Types$class.typeRef(Types.scala:2503)
[INFO]  at scala.tools.nsc.symtab.SymbolTable.typeRef(SymbolTable.scala:13)
[INFO]  at scala.tools.nsc.symtab.Types$TypeMap.mapOver(Types.scala:2828)
[INFO]  at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3209)
[INFO]  at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3085)
[INFO]  at scala.tools.nsc.symtab.Types$TypeMap.mapOver(Types.scala:2849)
[INFO]  at scala.tools.nsc.symtab.Types$AsSeenFromMap.apply(Types.scala:3209)
[INFO]  at scala.tools.nsc.symtab.Types$Type.asSeenFrom(Types.scala:507)
[INFO]  at scala.tools.nsc.symtab.Types$Type.computeMemberType(Types.scala:531)
[INFO]  at scala.tools.nsc.symtab.Symbols$MethodSymbol.typeAsMemberOf(Symbols.scala:1774)
[INFO]  at scala.tools.nsc.symtab.Types$Type.memberType(Types.scala:522)
[INFO]  at scala.tools.nsc.symtab.Types$Type.findMember(Types.scala:858)
[INFO]  at scala.tools.nsc.symtab.Types$Type.nonPrivateMembers(Types.scala:453)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub0$1(Types.scala:4919)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub0$1(Types.scala:4873)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub(Types.scala:4943)
[INFO]  at scala.tools.nsc.symtab.SymbolTable.lub(SymbolTable.scala:13)
[INFO]  at scala.tools.nsc.symtab.Types$class.lubsym$1(Types.scala:4901)
[INFO]  at scala.tools.nsc.symtab.Types$$anonfun$38.apply(Types.scala:4924)
[INFO]  at scala.tools.nsc.symtab.Types$$anonfun$38.apply(Types.scala:4919)
[INFO]  at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
[INFO]  at scala.collection.immutable.List.foreach(List.scala:45)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub0$1(Types.scala:4919)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub(Types.scala:4943)
[INFO]  at scala.tools.nsc.symtab.SymbolTable.lub(SymbolTable.scala:13)
[INFO]  at scala.tools.nsc.symtab.Types$class.lub(Types.scala:4863)
[INFO]  at scala.tools.nsc.symtab.SymbolTable.lub(SymbolTable.scala:13)
[INFO]  at scala.tools.nsc.symtab.Types$class.solveOne$1(Types.scala:4675)
[INFO]  at scala.tools.nsc.symtab.Types$$anonfun$solve$1.apply(Types.scala:4684)
[INFO]  at scala.tools.nsc.symtab.Types$$anonfun$solve$1.apply(Types.scala:4683)
[INFO]  at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
[INFO]  at scala.collection.immutable.List.foreach(List.scala:45)
[ERROR] error: fatal error (server aborted): Java heap space
[ERROR] one error found

Как я могу решить эту проблему? Я не знаю, что является причиной этой ошибки и нашел что-то в Google, кроме увеличения памяти.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Очевидно, вам нужно увеличить mx.Одной из проблем, которые Scala имеет , является ее большое потребление памяти.Я полагаю, что благодаря широкому распространению 64-разрядных процессоров и серверных ОС и появлению 64-разрядных настольных ОС, это не станет критически важным.

1 голос
/ 04 марта 2011

Вы можете начать с настройки некоторой отладки в компиляторе, чтобы попытаться выяснить, откуда это происходит: http://www.scala -lang.org / document / files / tools / scalac.html

...