scala如何指定JVM最大堆大小“Xmx”,以便在SBT中运行具有“run”操作的应用程序?
我的应用程序处理大型数据数组,需要比JVM默认提供的内存更多的内存。我知道在Java中它是由“-Xmx”选项指定的。如何设置SBT以使用特定的“-Xmx”值来运行具有“run”操作的应用程序
你可以在下面搜索框中键入要查询的问题!
我的应用程序处理大型数据数组,需要比JVM默认提供的内存更多的内存。我知道在Java中它是由“-Xmx”选项指定的。如何设置SBT以使用特定的“-Xmx”值来运行具有“run”操作的应用程序
# 1 楼答案
如果在linux shell上运行sbt,则可以使用:
这是我通常用来运行sbt项目的命令
# 2 楼答案
我知道有一种方法。设置环境变量JAVA_OPTS
我还没有找到一种作为命令参数执行此操作的方法
# 3 楼答案
对于分叉流程,您应该查看构建。scala
要修改分叉进程的java选项,需要在构建中指定它们。scala(或您为构建命名的任何东西)如下所示:
这将为您提供正确的选项,而无需全局修改JAVA_选项,和它将把自定义JAVA_选项放在sbt generated start-script
对于非分叉的进程,最方便的方法是通过
sbtopts
或sbtconfig
设置配置,具体取决于您的sbt版本自sbt 0.13.6^{} is deprecated 。沿以下行修改
/usr/local/etc/sbtopts
:您还可以使用与
/usr/local/etc/sbtopts
文件相同的语法在SBT项目的根目录中创建.sbtopts
文件。这使得项目是独立的在sbt 0.13.6之前您可以在中设置选项。非分叉过程的SBT配置:
检查sbt的位置:
请看内容:
设置正确的jvm选项以防止OOM(常规和永久):
如果您只想为当前运行的SBT设置SBT_选项,您可以按照Googol Shan的建议使用
env SBT_OPTS=".." sbt
。或者您可以使用Sbt 12中添加的选项:sbt -mem 2048
。对于较长的选项列表来说,这会变得很麻烦,但如果您有不同需求的不同项目,这可能会有所帮助请注意,CMSClassUnloadingEnabled与UseConcMarkSweepGC配合使用有助于保持PermGen空间干净,但根据您使用的框架,PermGen上可能存在实际泄漏,这最终会强制重新启动
# 4 楼答案
试试这个:
# 5 楼答案
.sbtconfig
不推荐从SBT0.13.6
开始使用。相反,我在/usr/local/etc/sbtopts
中以以下方式配置了这些选项:# 6 楼答案
在sbt第12版及以后的版本中,有一个选项: