◆ 星遥社区 上传日志,AI协助分析!还有专人解答!快来试试吧! 立即体验
头图

冰火传说内存修复

📖 模组介绍

冰火传说 会给游戏里的每一个生物(包括动物、怪物、村民)都挂上一份“状态数据包”,用来记录冰冻、锁链、海妖魅惑等效果。但问题是——绝大多数生物根本用不到这些功能,却依然背着完整的数据包,而且游戏每 tick 都要去翻找一遍。

导致的结果就是:内存占用虚高,无谓的性能开销。

这个模组做的就是:把不必要的内存占用砍掉,把查询路径缩短。

省流: 总内存占用降低约 20%,综合性能提升约 7%。


⚙️ 优化原理

1. 缓存查询结果,不走弯路

每个生物第一次需要状态数据时正常查询,之后直接把结果存到生物自己身上。下次再查,一步到位,不再绕路去全局注册表翻找。

2. 用到了才创建,不提前占坑

原版不管生物用不用,一上来就创建 4 个对象(锁链、魅惑、烂鸡蛋、杂项)。优化后只有真正用到时才创建,普通动物/怪物/村民永远不会分配这些多余对象。

3. 读归读,写归写

只是查看状态时用共享空对象,不会产生新数据。只有真正要改变状态时才创建专属数据。

4. 状态空了就释放,存档只存有用的

状态解除后立刻释放对应对象,NBT 也只保存有意义的数据。兼容旧存档,升级无忧。


📊 优化效果

测试方式:Spark heapsummary,相同整合包、相同种子,跑图 5 分钟。
指标未优化优化后提升
冰火传说 相关内存382 KB272 KB-28.7%
状态数据包内部内存169 KB72 KB-57.0%
每个生物的状态数据成本~220 B~96 B-56.1%
4 类延迟子对象总数3,080 个17 个-99.45%
JVM 已用堆内存4.13 GiB3.57 GiB约 -478 MiB

🕹️ 实际游玩 6 小时对比

测试方式:Spark heapsummary,相同整合包、视距、实体距离,TPS 稳定 20,跑图 + 基地活动交替。
指标未优化优化后差异
每 tick 查询次数数亿次全局查找本地缓存直接读绝大部分查询被消除
JVM 已用堆~6.2 GiB~4.9 GiB减少约 1.3 GiB

支持版本

Forge: 1.20.1 / 1.19.2

下载方式

CurseForge: https://www.curseforge.com/minecraft/mc-mods/ice-and-fire-memory-fix/