工具的核心功能是实时监控堆内存使用情况。内存时间线图表以动态滚动的方式显示堆内存的变化趋势,纵轴为堆内存大小(MB),横轴为时间。图表会自动缩放以适应数据范围,当内存超过图表上限时会自动调整刻度。用户可以清晰地看到每次对象分配和垃圾回收对堆内存的影响。
对象分配测试按钮提供了四种典型的内存分配场景。大数组按钮创建包含 10 万元素的数组,测试连续内存分配。对象池按钮创建包含 5 万个属性的对象,测试大量属性对内存的影响。Map 按钮创建包含 2 万条目的 Map 结构。闭包按钮创建 5 千个闭包函数,测试闭包对内存的影响。释放按钮可以一次性释放所有测试对象。
对象类型计数器实时跟踪 Array、Object、Function、Map/Set 等类型的数量变化。快照功能可以在任意时刻捕获当前的堆内存状态,支持多个快照的对比分析。FinalizationRegistry 功能注册对象的回收回调,当对象被垃圾回收时会触发回调并记录在事件日志中。重置按钮清空所有数据和图表。
FinalizationRegistry 是 ES2021 引入的 API,允许注册对象被垃圾回收时的回调函数。在工具中点击"注册追踪"按钮后,所有测试对象都会被注册到 FinalizationRegistry 中。当对象被垃圾回收后,回调函数会被触发并在事件日志中记录。这帮助开发者验证垃圾回收是否按预期工作。需要注意的是,GC 的时机是不确定的,回调可能在对象变为不可达后的任意时刻触发。如果长时间未触发回调,说明对象可能仍然被某些引用持有,可能存在内存泄漏。对象类型计数器实时跟踪 Array、Object、Function、Map/Set 等类型的数量变化,帮助识别哪类对象在持续增长。快照功能可以在任意时刻捕获堆内存的详细状态,支持多个快照的差异对比。
UD5工具箱