无法为`sbt start`设置内存设置

时间:2014-09-16 19:47:03

标签: scala amazon-ec2 out-of-memory sbt jvm-arguments

我尝试在AWS上用 ec2 t2.micro 实例的计算机上运行用Scala编写的Play Framework应用程序中的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: -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m ...尽管我将JVM args以多种不同的方式设置为其他东西但没有效果。

使用这些参数-Xss1m -Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled我尝试了一切:

  • 在/ usr / share / sbt-launcher-packaging / conf / sbtopts中设置JVM args
  • 同样在/usr/share/sbt-launcher-packaging/conf/sbtconfig.txt
  • 在运行时直接提供args:sbt -J-Xss1m -J-Xms256m -J-Xmx512m -J-XX:+CMSClassUnloadingEnabled start
  • 已在build.sbt
  • 中设置fork in run := true build.sbt中的
  • javaOptions in run += "-Xmx512m -XX:+CMSClassUnloadingEnabled"

他们都没有帮助。每次运行应用程序时,日志中都会显示相同的1024条内容。请帮忙。

2 个答案:

答案 0 :(得分:10)

过去在Linux上为sbt设置jvm内存参数也很困难(在Windows上你可以调整sbtconfig.txt但是这个以及你可以指定的所有其他地方SBT_OPTS我能找到由于某些原因,它不能在Linux上工作。)

上次我使用-mem <amount>本身的sbt选项解决了这个问题。

所以,在你的情况下,你应该尝试这样的事情:

$ sbt -mem 512 start

答案 1 :(得分:1)

我今天遇到了与EC2纳米实例相同的问题。解决这个问题:

cd /etc/sbt-launcher-packaging/ 
sudo nano sbtopts

然后取消注释-mem选项。我已将其设置为256,之后我可以在nano-instance上运行sbt。 编辑后的此配置文件的示例部分:

# Path to local Ivy repository (default: ~/.ivy2)
#
#-ivy ~/.ivy2

# set memory options
#
-mem   256

# Use local caches for projects, no sharing.
#
#-no-share