java.lang.OutOfMemoryError:Scala 上超出了 GC 开销限制

Uda*_*mar 5 eclipse scala playframework-2.0

我是 Scala 开发人员,如果我添加另一行抛出下面的错误,我会在包含1008 行的路由文件中收到此错误。

\n\n
Uncaught error from thread [sbt-web-scheduler-1] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[sbt-web]\njava.lang.OutOfMemoryError: GC overhead limit exceeded\n        at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)\n        at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)\n        at java.util.jar.Manifest.read(Unknown Source)\n        at java.util.jar.Manifest.<init>(Unknown Source)\n        at java.util.jar.JarFile.getManifestFromReference(Unknown Source)\n        at java.util.jar.JarFile.getManifest(Unknown Source)\n        at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source)\n        at java.net.URLClassLoader.defineClass(Unknown Source)\n[ERROR] [04/12/2016 15:17:32.883] [sbt-web-scheduler-1] [ActorSystem(sbt-web)] exception on LARS\xc3\x86 timer thread\n        at java.net.URLClassLoader.access$100(Unknown Source)\njava.lang.OutOfMemoryError: GC overhead limit exceeded\n        at java.net.URLClassLoader$1.run(Unknown Source)\n        at java.net.URLClassLoader$1.run(Unknown Source)\n        at akka.actor.LightArrayRevolverScheduler$$anon$8.nextTick(Scheduler.scala:409)\n        at java.security.AccessController.doPrivileged(Native Method)\n        at akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)\n        at java.net.URLClassLoader.findClass(Unknown Source)\n        at java.lang.ClassLoader.loadClass(Unknown Source)\n        at java.lang.Thread.run(Unknown Source)\n        at java.lang.ClassLoader.loadClass(Unknown Source)\n\n        at akka.event.Logging$Info$.apply(Logging.scala:665)\n        at akka.event.BusLogging.notifyInfo(Logging.scala:1140)\n        at akka.event.LoggingAdapter$class.info(Logging.scala:950)\n        at akka.event.BusLogging.info(Logging.scala:1128)\n        at akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:382)\n[ERROR] [04/12/2016 15:18:33.808] [sbt-web-scheduler-1] [ActorSystem(sbt-web)] Uncaught error from thread [sbt-web-scheduler-1]         at java.lang.Thread.run(Unknown Source)\nshutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled\njava.lang.OutOfMemoryError: GC overhead limit exceeded\n        at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)\n        at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source)\n        at java.util.jar.Manifest.read(Unknown Source)\n        at java.util.jar.Manifest.<init>(Unknown Source)\n        at java.util.jar.JarFile.getManifestFromReference(Unknown Source)\n        at java.util.jar.JarFile.getManifest(Unknown Source)\n        at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source)\n        at java.net.URLClassLoader.defineClass(Unknown Source)\n        at java.net.URLClassLoader.access$100(Unknown Source)\n        at java.net.URLClassLoader$1.run(Unknown Source)\n        at java.net.URLClassLoader$1.run(Unknown Source)\n        at java.security.AccessController.doPrivileged(Native Method)\n
Run Code Online (Sandbox Code Playgroud)\n\n

路线中接受多少条线路?我该如何解决这个问题?

\n\n

编辑:日食

\n\n

谢谢\nB.UdayaKumar

\n

Vis*_*667 3

通常,当 Java 堆中没有足够的空间来分配对象时,会抛出此错误。在这种情况下,垃圾收集器无法腾出空间来容纳新对象,并且堆也无法进一步扩展。此外,当本机内存不足以支持 Java 类的加载时,也可能会引发此错误。在极少数情况下,java.lang.OutOfMemoryError当花费过多的时间进行垃圾收集并且释放很少的内存时,可能会抛出 a 。

您基本上已经耗尽内存来顺利运行该过程。我想到的选项是:

  • 使用JAVA_OPTS环境变量指定更多内存,尝试介于两者之间的内容,例如 - Xmx1G
  • 您还可以通过启用来手动调整 GC-XX:+UseConcMarkSweepGC

有关 GC 调优的更多选项,请参阅并发标记扫描

增加 HEAP 大小应该可以解决您的路由限制问题。