Scala Can';t设置'sbt start'的内存设置`

Scala Can';t设置'sbt start'的内存设置`,scala,amazon-ec2,out-of-memory,sbt,jvm-arguments,Scala,Amazon Ec2,Out Of Memory,Sbt,Jvm Arguments,我正试图在一个用Scala编写的Play Framework应用程序中运行sbt start,该应用程序的机器是AWS上的ec2 t2.micro实例。但是我不能,因为没有足够的内存让Java运行时环境继续运行 这台机器有1GB的内存,但实际上,在运行其余的操作系统进程时,可以使用930MB的可用内存。它是Ubuntu服务器14.04 LTS。这个应用程序很小,很可爱 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memo

我正试图在一个用Scala编写的Play Framework应用程序中运行
sbt start
,该应用程序的机器是AWS上的ec2 t2.micro实例。但是我不能,因为没有足够的内存让Java运行时环境继续运行

这台机器有1GB的内存,但实际上,在运行其余的操作系统进程时,可以使用930MB的可用内存。它是Ubuntu服务器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
有关详细信息,请参阅日志文件

在里面我看到了
jvm\u args:-Xms1024m-Xmx1024m-XX:ReservedCodeCacheSize=128m…
,尽管我用许多不同的方式将jvm args设置为其他东西,但没有效果

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

  • 在/usr/share/sbt-launcher-packaging/conf/sbtopts中设置JVM参数
  • 在/usr/share/sbt launcher packaging/conf/sbtconfig.txt中相同
  • 运行时直接提供参数:
    sbt-J-Xss1m-J-Xms256m-J-Xmx512m-J-XX:+CMSClassUnloadingEnabled start
  • 已在build.sbt中设置了运行中的分叉:=true
  • run+=“-Xmx512m-XX中的javaOptions:+cmsclasssunloadingEnabled”
    in build.sbt

他们两个都帮不上忙。每次我运行应用程序时,日志中都会出现相同的内容。请提供帮助。

过去在Linux上为
sbt
设置jvm内存参数时也遇到了困难(在Windows上,您可以调整
sbtconfig.txt
,但由于某些原因,我发现这个和所有其他可以指定
sbt\u OPTS
的地方在Linux上都不起作用)

上次我通过使用
sbt
本身的
-mem
选项解决了这个问题

因此,在您的情况下,您应该尝试以下方法:

$ sbt -mem 512 start

我今天在EC2nano实例中遇到了同样的问题。这样解决:

cd /etc/sbt-launcher-packaging/ 
sudo nano sbtopts
然后取消注释-mem选项。我已经将其设置为256,之后我可以在nano实例上正常运行sbt。 编辑后此配置文件的示例:

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

# set memory options
#
-mem   256

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

碰撞仍然没有线索。我误解了你的问题,认为你是想增加分配给jvm的内存,而实际上你想减少它。你仍然可以使用我的建议去做,但是记忆量不同。我已经更新了我的答案,让我知道它是否适合你。