Heroku部署blynk-server时报java.lang.OutOfMemoryError如何解决
这个错误是Heroku构建环境的资源配额不足导致的,Maven默认的构建线程数、JVM内存配置超过了Heroku dyno的线程/内存上限,无法创建新的native线程,可按以下步骤修复:
修复方案
- 配置构建环境参数
在项目根目录新建system.properties文件,写入以下配置:
# 匹配项目需要的JDK版本 java.runtime.version=1.8 # 限制Maven内存、线程数 maven.opts=-Xmx512m -XX:MaxMetaspaceSize=256m -Xss256k -Dmaven.threads=1
该配置会限制Maven单线程构建,缩小每个线程的栈空间和整体堆内存上限,降低构建时的资源消耗。
关闭多线程编译配置
检查项目pom.xml中maven-compiler-plugin的配置,删除多线程编译相关参数,将<fork>true</fork>改为<fork>false</fork>,避免构建时额外创建子进程占用线程资源。跳过在线构建(可选)
如果上述配置仍无法解决问题,可以本地执行mvn -DskipTests=true clean package打好可运行jar包,直接通过Heroku的jar部署流程上传打包好的文件,完全跳过在线构建环节,避免构建阶段的资源限制问题。
内容的提问来源于stack exchange,提问作者Maximax67
相关产品推荐
相关产品推荐

