我的世界内存优化 - JVM参数与显卡设置
游戏周期性卡顿、跑图时卡住,常与内存分配和 Java 虚拟机垃圾回收(GC)参数有关。本文说明内存分配原则、常用 JVM 参数的作用,以及强制游戏使用独立显卡的步骤。
按物理内存选择 HMCL 分配大小
| 电脑物理内存总量 | HMCL 分配内存建议 | 适用场景 |
|---|---|---|
| 电脑总内存 8 GB | 2560 MB - 3584 MB (约2.5G - 3.5G) | 低版本纯净版或精简模组生存,预留系统内存。 |
| 电脑总内存 16 GB (主流) | 4096 MB - 6144 MB (4G - 6G) | 科技、魔法、光影中大型整合包的常见设置。 |
| 电脑总内存 32 GB 或更高 | 8192 MB - 12288 MB (8G - 12G) | 大型光影整合包;内存分配过高反而会增加 GC 停顿。 |
为什么要设置 JVM 参数:垃圾回收(GC)与卡顿
我的世界是 Java 程序,内存由 Java 虚拟机(JVM)管理。JVM 会定期执行垃圾回收(GC),把不再使用的对象内存释放。当内存分配过大或 GC 配置不合适时,GC 会频繁暂停(STW,Stop-The-World),表现为周期性卡顿。
GC 参数应按电脑配置和模组包情况调整,没有对所有人通用的“最优参数”。下面提供一组常用的 G1GC 参数供参考,复制到 HMCL 游戏高级设置 -> JVM 参数后,如出现启动失败或异常,请先清空参数恢复默认再排查:
-XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=45
参数作用说明:-XX:MaxGCPauseMillis=50 设定 GC 暂停目标不超过 50ms;-XX:G1NewSizePercent / G1MaxNewSizePercent 控制新生代占比;-XX:InitiatingHeapOccupancyPercent 控制触发并发回收的堆占用阈值。数值需按实际内存调整,模组越多越需要预留堆空间。
OptiFine 与 Sodium:画质与渲染优化
除 JVM 参数外,常见的性能与画质优化还有两类模组:OptiFine(提供光影、动态纹理与渲染距离优化,常用于原版/Forge)与 Sodium(Fabric 生态的渲染优化模组,常配合 Lithium、Phosphor 使用)。它们属于独立安装主题,与加载器版本强相关,详细安装步骤将作为单独指南整理。
强制游戏使用独立显卡的步骤
- 在 Windows 图形设置中添加 javaw.exe:右键桌面空白处选择“显示设置” -> 拖到最下方点击“图形设置”,点击“浏览”。
- 定位 Java 运行路径:在 HMCL Java 管理中复制当前使用的 javaw.exe 绝对路径(位于 `.minecraft/runtime` 或 Adoptium 目录),在图形设置中添加。
- 指定为“高性能”:在图形设置列表中选中已添加的 Java,点击“选项”,选择“高性能”(对应独立显卡)并保存。
常见问题
exit code -1073740791 常见于物理内存不足或显卡驱动异常导致的进程崩溃。可尝试:将虚拟内存设置为系统自动管理,更新独立显卡驱动,并适当降低 HMCL 分配给游戏的内存上限后重试。
完全起作用。JVM 参数是针对最底层的 Java 虚拟机生效的,无论是 Forge、Fabric、NeoForge 还是纯净原版游戏,这套参数都能完美调优底层的垃圾回收算法和内存堆栈指针,消除区块多重加载时的垃圾回收抖动。
Minecraft 在运行过程中会根据需要动态申请和释放内存。在游戏运行一段时间后,由于不断加载新的模组对象、区块资源,Java 内部垃圾回收器尚未开始批量回收,因此在 F3 中会显示出高内存占用,这属于正常机制,只要不发生 OutOfMemory 报错和长时间大掉帧,无需理会。