【发布时间】:2014-09-16 19:47:03
【问题描述】:
我正在尝试在一个用 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
Here is the link 到日志文件以获取更多信息。
在里面我看到jvm_args: -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m ... 尽管我以很多不同的方式将我的 JVM 参数设置为其他东西但没有效果。
有了这些论据-Xss1m -Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled我什么都试过了:
- 在 /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 中设置了
fork in run := true -
javaOptions in run += "-Xmx512m -XX:+CMSClassUnloadingEnabled"在 build.sbt 中
它们都没有帮助。每次我运行应用程序时,日志中都会出现相同的 1024 条内容。请帮忙。
【问题讨论】:
-
凹凸。还是没有头绪。
-
我误解了你的问题,并认为你想增加分配给 jvm 的内存,而实际上你想减少它。您仍然应该能够使用我的建议来执行此操作,但内存量不同。我已经更新了我的答案,让我知道它是否对你有用。
标签: scala amazon-ec2 out-of-memory sbt jvm-arguments