Scala Can';t设置'sbt start'的内存设置`
我正试图在一个用Scala编写的Play Framework应用程序中运行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
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
in build.sbtrun+=“-Xmx512m-XX中的javaOptions:+cmsclasssunloadingEnabled”
他们两个都帮不上忙。每次我运行应用程序时,日志中都会出现相同的内容。请提供帮助。过去在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的内存,而实际上你想减少它。你仍然可以使用我的建议去做,但是记忆量不同。我已经更新了我的答案,让我知道它是否适合你。