Gradle分配内存不足:Forge 1.16.5模组开发内存溢出问题
Forge 1.16.5模组开发runClient内存溢出问题解决
问题情况
- 开发环境:IntelliJ Idea + Gradle + Minecraft Forge 1.16.5
- 初始故障:执行
runClient任务时,Gradle仅分配257MB堆内存,直接触发堆内存溢出:[15:59:07] [Render thread/FATAL] [minecraft/Minecraft]: 内存不足 java.lang.OutOfMemoryError: Java堆空间 - 添加
jvmArgs "-Xms2g", "-Xmx2g"到build.gradle后,任务执行失败:Execution failed for task ':runClient'. > 进程 'command 'C:\Program Files (x86)\Java\jdk1.8.0_202\bin\java.exe'' 以非零退出值1结束 - 尝试分配1G内存时,仍出现内存相关错误:
java.io.IOException: 无法加载图像:内存不足 java.lang.IllegalStateException: 图像未分配。
解决方法
1. 正确配置Forge运行任务的JVM参数
Forge 1.16.5对应的Gradle版本对runClient的参数配置有特定要求,直接加jvmArgs容易冲突,建议用以下方式配置:
// 在build.gradle中添加 tasks.withType(JavaExec) { if (name in ['runClient', 'runServer']) { jvmArgs = [ '-Xms2G', '-Xmx4G', '-XX:+UseG1GC', '-XX:MaxGCPauseMillis=200', '-Dfml.ignoreInvalidMinecraftCertificates=true', '-Dfml.ignorePatchDiscrepancies=true' ] } }
或者单独配置runClient任务:
runClient { jvmArgs += [ '-Xms2G', '-Xmx4G', '-XX:+UseConcMarkSweepGC' // Java 8适配的垃圾回收器 ] }
2. 更换64位Java 8 JDK
你当前使用的是32位Java 8(路径带Program Files (x86)),32位Java的最大堆内存上限通常不超过1.5G,强行分配2G会导致启动失败。
- 卸载32位JDK,安装Java 8 64位版本
- 在IntelliJ中切换项目SDK:
- 打开
文件 > 项目结构 > 项目设置 > 项目 - 将
项目SDK切换为已安装的64位Java 8 - 同步Gradle项目
- 打开
3. 调整IntelliJ的Gradle自身内存
Gradle自身内存不足也会影响任务执行,可调整其VM参数:
- 打开
文件 > 设置 > 构建、执行、部署 > 构建工具 > Gradle - 在
Gradle VM选项中输入:-Xms1G -Xmx2G - 保存设置
4. 清理缓存重新构建
- 执行Gradle的
clean任务,清除旧构建文件 - 重启IntelliJ,重新同步Gradle项目
- 再次运行
runClient任务
内容的提问来源于stack exchange,提问作者Gavin Justakid_Abu
相关产品推荐
相关产品推荐

