我正在尝试在以Scala编写的Play Framework应用程序中在AWS上的ec2 t2.micro实例的计算机上运行sbt start
。但是我不能,因为没有足够的内存来继续Java Runtime Environment。
该机器具有1GB的内存,但实际上,在运行其余OS进程时,可以使用930MB的可用内存。它是Ubuntu Server 14.04 LTS。该应用程序小巧可爱。
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000d5550000, 715849728, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 715849728 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /app/incoming/hs_err_pid9709.log
Here is the link到日志文件以获取更多信息。
尽管我以多种方式将JVM args设置为其他方式,但在内部却看到
jvm_args: -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m ...
,但没有任何效果。使用这些参数
-Xss1m -Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled
我尝试了一切:sbt -J-Xss1m -J-Xms256m -J-Xmx512m -J-XX:+CMSClassUnloadingEnabled start
fork in run := true
javaOptions in run += "-Xmx512m -XX:+CMSClassUnloadingEnabled"
他们都没有帮助。每次我运行该应用程序时,日志中都会出现同样la脚的1024件事。请帮忙。
最佳答案
过去在Linux上为sbt
设置jvm内存args也很费劲(在Windows上,您可以调整sbtconfig.txt
,但是由于某些原因,在此以及您可以指定SBT_OPTS
的所有其他地方,在Linux上它们不起作用)。
上一次我通过使用-mem <amount>
本身的sbt
选项解决了此问题。
因此,在您的情况下,您应该尝试这样的操作:
$ sbt -mem 512 start
关于scala - 无法设置 `sbt start`的内存设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877206/