更新时间:2026-7-24 16:00:49
修复 collectgarbage("step") 使用极大参数时的算术溢出。
修复加载二进制 Lua chunk 时不触发 GC,反复加载可能持续占用内存。
修复 __newindex 更新时遗漏 GC 写屏障,极端情况下可能错误回收仍在使用的对象。
修复 lua_load 调用 reader 回调后没有正确保持 Lua 栈。
修复 luaL_newmetatable 在内存分配失败后留下不完整元表。
修复 string.gmatch 执行报错后迭代器状态不一致。
修复非法 UTF-8 解码时的移位溢出。
修复 32 位系统上 string.packsize 的长度溢出。
改进解析器、二进制 chunk 加载、栈空间检查及终结器执行时的对象保护。
修复内存回收衰减过程中的潜在死锁。
修复 extent 合并时可能出现的段错误。
修复后台回收线程初始化竞争。
修复部分内存泄漏及 tcache 初始化失败处理。
优化线程缓存 GC、内存块复用、配对堆和大小类别计算。
降低大型内存分配及大页系统上的额外内存开销。
改进 AArch64、64 KB 页面、musl、FreeBSD、macOS 和 32 位平台兼容性。
增加双重释放检测、线程缓存控制及更多内存统计接口。
修复 rallocx() 内存不足时未正确设置 ENOMEM。
增加 --disable-cxx 构建参数,避免服务端不需要的 C++ jemalloc 接口造成编译问题
整体效果是:Lua 执行和 GC 更稳定,jemalloc 的并发内存分配、回收性能及稳定性得到更新,不需要修改现有业务 Lua 脚本。
|