Ich verwende Scala 2.9.0.final auf Ubuntu 11.04. Das Starten von Scala über die Kommandozeile dauert etwa 20 Sekunden, bevor eine Eingabeaufforderung erscheint.
Mir ist klar, dass ich mit einer gewissen Verzögerung rechnen sollte, da es Compiler-JAR-Dateien anführen muss, aber es fällt mir schwer zu glauben, dass es 20 Sekunden sein sollten - ich mache mir Sorgen, dass ich etwas falsch konfiguriert haben könnte.
EDIT
Also habe ich jstack ausprobiert, und es gibt eine lange Ausgabe, die über meinem Kopf liegt. Ich sehe einen Thread, der auf eine Mutex wartet. Aber wenn ich mir die Ausgabe von time
:
21.96s user 0.66s system 135% cpu 16.711 total
Es scheint, dass es eine anständige Menge von Zyklen auf beiden Kernen verbrachte ... so vielleicht ist es nicht nur auf einem Mutex für diese Zeit blockieren?
2011-07-28 11:45:02
Full thread dump OpenJDK 64-Bit Server VM (20.0-b11 mixed mode):
"Attach Listener" daemon prio=10 tid=0x00000000023ea000 nid=0x19a9 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Thread-0" prio=10 tid=0x00007f7768304800 nid=0x19a8 runnable [0x00007f776cd92000]
java.lang.Thread.State: RUNNABLE
at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.<init>(Growable.scala:48)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:128)
at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242)
at scala.collection.mutable.WrappedArray.toList(WrappedArray.scala:33)
at scala.collection.immutable.List$.apply(List.scala:434)
at scala.Option.toList(Option.scala:231)
at scala.tools.nsc.util.DirectoryClassPath.asURLs(ClassPath.scala:321)
at scala.tools.nsc.util.ClassPath.sortString(ClassPath.scala:284)
at scala.tools.nsc.util.ClassPath.hashCode(ClassPath.scala:289)
at scala.collection.mutable.FlatHashTable$HashUtils$class.elemHashCode(FlatHashTable.scala:349)
at scala.collection.mutable.HashSet.elemHashCode(HashSet.scala:39)
at scala.collection.mutable.FlatHashTable$class.containsEntry(FlatHashTable.scala:109)
at scala.collection.mutable.HashSet.containsEntry(HashSet.scala:39)
at scala.collection.mutable.HashSet.contains(HashSet.scala:55)
at scala.collection.GenSetLike$class.apply(GenSetLike.scala:44)
at scala.collection.mutable.HashSet.apply(HashSet.scala:39)
at scala.collection.SeqLike$$anonfun$distinct$1.apply(SeqLike.scala:505)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.SeqLike$class.distinct(SeqLike.scala:504)
at scala.collection.immutable.List.distinct(List.scala:45)
at scala.tools.util.PathResolver$Calculated$.containers(PathResolver.scala:206)
- locked <0x00000000faba8098> (a scala.tools.util.PathResolver$Calculated$)
at scala.tools.util.PathResolver.containers(PathResolver.scala:228)
at scala.tools.util.PathResolver.result(PathResolver.scala:231)
- locked <0x00000000faba8050> (a scala.tools.util.PathResolver)
at scala.tools.nsc.backend.JavaPlatform$class.classPath(JavaPlatform.scala:18)
at scala.tools.nsc.Global$$anon$2.classPath(Global.scala:54)
- locked <0x00000000faba7ff0> (a scala.tools.nsc.Global$$anon$2)
at scala.tools.nsc.backend.JavaPlatform$class.rootLoader(JavaPlatform.scala:19)
at scala.tools.nsc.Global$$anon$2.rootLoader(Global.scala:54)
at scala.tools.nsc.Global$$anon$2.rootLoader(Global.scala:54)
at scala.tools.nsc.Global.rootLoader(Global.scala:57)
at scala.tools.nsc.symtab.Definitions$definitions$.RootClass(Definitions.scala:138)
- locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$)
at scala.tools.nsc.symtab.Definitions$definitions$.EmptyPackage(Definitions.scala:141)
- locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$)
at scala.tools.nsc.symtab.Definitions$definitions$.EmptyPackageClass(Definitions.scala:142)
- locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$)
at scala.tools.nsc.symtab.Definitions$definitions$.init(Definitions.scala:804)
at scala.tools.nsc.Global$Run.<init>(Global.scala:693)
at scala.tools.nsc.interpreter.IMain.scala$tools$nsc$interpreter$IMain$$_initialize(IMain.scala:120)
at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$1.apply$mcZ$sp(IMain.scala:154)
at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$2.apply(IMain.scala:154)
at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$2.apply(IMain.scala:154)
at scala.concurrent.ThreadRunner$$anon$2$$anonfun$run$2.apply(ThreadRunner.scala:45)
at scala.concurrent.ThreadRunner.scala$concurrent$ThreadRunner$$tryCatch(ThreadRunner.scala:31)
at scala.concurrent.ThreadRunner$$anon$2.run(ThreadRunner.scala:45)
at java.lang.Thread.run(Thread.java:679)
"Low Memory Detector" daemon prio=10 tid=0x00007f77680b9000 nid=0x1996 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=10 tid=0x00007f77680b6800 nid=0x1995 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=10 tid=0x00007f77680b3800 nid=0x1994 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x00007f77680b2000 nid=0x1993 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x00007f7768092800 nid=0x1992 in Object.wait() [0x00007f776e27c000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000fb2d82d0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)
- locked <0x00000000fb2d82d0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
"Reference Handler" daemon prio=10 tid=0x00007f7768091000 nid=0x1991 in Object.wait() [0x00007f776e37d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000fb2d8370> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x00000000fb2d8370> (a java.lang.ref.Reference$Lock)
"main" prio=10 tid=0x0000000001db4800 nid=0x198d in Object.wait() [0x00007f7775067000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000fab8d110> (a scala.concurrent.SyncVar)
at java.lang.Object.wait(Object.java:502)
at scala.concurrent.SyncVar.get(SyncVar.scala:22)
- locked <0x00000000fab8d110> (a scala.concurrent.SyncVar)
at scala.concurrent.ThreadRunner$$anonfun$submit$1.apply(ThreadRunner.scala:48)
at scala.Function0$class.apply$mcZ$sp(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcZ$sp(AbstractFunction0.scala:12)
at scala.tools.nsc.interpreter.IMain.global(IMain.scala:162)
- locked <0x00000000fb2d8580> (a scala.tools.nsc.interpreter.ILoop$ILoopInterpreter)
at scala.tools.nsc.interpreter.JLineCompletion.<init>(JLineCompletion.scala:17)
at scala.tools.nsc.interpreter.ILoop.chooseReader(ILoop.scala:791)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:807)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:67)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
"VM Thread" prio=10 tid=0x00007f776808a000 nid=0x1990 runnable
"GC task thread#0 (ParallelGC)" prio=10 tid=0x0000000001dc0000 nid=0x198e runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x0000000001dc1800 nid=0x198f runnable
"VM Periodic Task Thread" prio=10 tid=0x00007f77680bb800 nid=0x1997 waiting on condition
JNI global references: 1010