如何为Scala版Play框架/Activator ~run增加运行及编译内存
解决Scala Play框架编译时内存不足的问题(Activator.bat配置)
我明白你在运行Scala版Play框架时碰到了编译内存不足的问题,刚好你已经定位到了activator.bat里的元空间/永久代配置段,那咱们直接从调整JVM堆内存参数入手解决这个问题。
具体修改步骤:
打开activator.bat文件,找到你提到的这段配置代码:
rem TODO Check if there are existing mem settings in JAVA_OPTS/CFG_OPTS and use those instead of the below for /f "delims=. tokens=1-3" %%v in ("%JAVA_VERSION%") do ( set MAJOR=%%v set MINOR=%%w set BUILD=%%x set META_SIZE=-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=256M if "!MINOR!" LSS "8" ( set META_SIZE=-XX:PermSize=64M -XX:MaxPermSize=256M )添加堆内存参数:在这个for循环内部,元空间配置的下方,新增堆内存的设置。你可以根据自己机器的内存情况调整数值,比如:
rem 添加堆内存配置,初始堆和最大堆可按需调整 set HEAP_SIZE=-Xms512M -Xmx2048M-Xms是JVM初始堆内存,建议设置成和-Xmx相同,避免JVM频繁扩容堆内存影响性能-Xmx是JVM最大堆内存,一般设置为物理内存的50%-70%,比如8G内存的机器可以设成-Xmx4G
整合参数到JAVA_OPTS:在bat文件中找到设置
JAVA_OPTS的位置,把咱们新增的HEAP_SIZE和已有的META_SIZE整合进去,比如:set JAVA_OPTS=%HEAP_SIZE% %META_SIZE% %JAVA_OPTS%这样启动activator时,JVM就会使用咱们配置的内存参数了。
额外优化建议:
如果你不想修改activator.bat文件,也可以在项目根目录创建一个.sbtopts文件,直接写入内存参数,这种方式更灵活且不会影响全局配置:
-J-Xms512M -J-Xmx2048M -J-XX:MetaspaceSize=64M -J-XX:MaxMetaspaceSize=256M
保存后重启编译进程,新参数就会生效。
修改完成后,记得重新启动activator或者sbt编译进程,这样新的内存配置就能解决你的编译内存不足问题啦。
内容的提问来源于stack exchange,提问作者ps0604
相关产品推荐
相关产品推荐

