我在使用机器上的sbt组装Spark时出现问题。 在没有分配额外内存的情况下尝试组件会在垃圾收集器上耗尽或超时;在我试过的不同时间,确切的问题有所不同。但是,任何尝试通过Xmx或Xms修改分配的内存,以及是否提供更多或限制,都会失败,因为sbt不会将-Xmx或-Xms识别为命令。
以下是我一直在尝试的一种命令示例(来自Spark的源目录):
sbt -Xmx2g assembly
以下是我收到的错误:
java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError: GC overhead limit exceeded
Use 'last' for the full log.
Not a valid command: Xmx2g
Not a valid project: Xmx2g
Expected ':' (if selecting a configuration)
Not a valid key: Xmx2g
Xmx2g
^
我正在运行64位Java,版本1.8.0_20。
答案 0 :(得分:4)
检查文档:Building Spark with Maven。
设置Maven的内存使用
通过设置MAVEN_OPTS,您需要将Maven配置为使用比平常更多的内存。我们建议使用以下设置:
export MAVEN_OPTS =“ - Xmx2g -XX:MaxPermSize = 512M -XX:ReservedCodeCacheSize = 512m”
然后你可以用:
构建它mvn -DskipTests package
答案 1 :(得分:4)
尝试使用值SBT_OPTS
创建新的环境变量"-XX:MaxPermSize=1024m"
。这应该给予sbt所需的内存而不会产生错误。