跳到正文

Recoleta

一款专为 Minecraft 优化内存占用的模组

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

Recoleta

该模组无需使用 JDK 25 运行时,即可将两项 JDK 25 JEP 的理念移植到正在运行的游戏中:

JEP 原生适用范围(JDK 25) Recoleta 移植实现 领域
519 – 紧凑对象头 将每个对象头从 12 B 缩减至 8 B 将 Minecraft 中占主导地位的值数据编码为紧凑的基本类型形式,使典型的单实例占用从 24-56 B 降至 8 B 对象头/值打包
521 – 分代 Shenandoah 为低暂停并发 GC 引入新生代和老年代 通过分代复用池、限制每刻的引用清理量,以及堆压力回调,在游戏循环中模拟低暂停的局部性 对象池与感知压力的清理

其他优化途径

  • 为类似缓存的工作负载使用带软引用值的有界 LRU
  • 对重复字符串进行弱引用驻留,减少堆中的重复副本
  • 在线程局部存储中复用位置/向量载体,优化热点循环
  • 在空闲时收缩长期存活的可扩展缓冲区,释放冗余空间
  • 将堆压力通知接入主动逐出/回收回调
  • 限制每种渲染样式的粒子数量(低于原版的 16384),减少客户端内存峰值
  • 路径碰撞缓存现在使用紧凑的打包键,减少大型键对象的频繁创建。
  • 路径步进会复用可变向量槽位,避免分配临时向量。
  • 生成距离检查使用标量运算,避免创建临时几何对象。
  • 热点生成位置循环会复用可变坐标载体,而不是反复分配新对象。
  • 小型 NBT 路径会为常见的小型负载适当缩减底层映射的大小。
  • 加载 NBT 时会重新打包刚解码的复合标签,避免已加载标签携带冗余空间。
  • 空列表标签容器会使用较小的底层数组,其大小适合常见的少量条目负载(附魔、描述文本、属性修饰符列表)。
  • 能力比较会逐项提前结束,避免每次检查物品堆叠是否相等时都构建两份完整的标签快照。
  • 区块流式传输数据包中的方块实体列表会以较小容量开始,而非默认的 10 个槽位。

每项优化都会通过 /recoleta memory status 命令报告命中次数,方便管理员确认相应调优是否确实生效。

配置

所有开关都位于 config/recoleta-memory.toml(Forge 配置)中。可在运行时编辑;每次访问时都会重新读取配置值。

提示

部分改动具有破坏性,我无法保证它们与所有模组都能良好兼容。

对于当前版本,任何与 sable、Sinytra Connector、lithium 及其衍生版本相关的问题均不予受理;同时应保持与 ModernFix 和 FerriteCore 的兼容性。

常见问题

Recoleta 支持哪些 Minecraft 版本?

Recoleta 支持 Minecraft Java 版 1.19.2–1.21.1,共 3 个版本,可用的加载器:Fabric / Forge / NeoForge / Quilt。下载时注意选择和你游戏版本一致的文件。

Recoleta 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge / Quilt,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

CancriRecoleta 的其他作品

查看全部 →