Files
OxideJS-New/tests/stress/mem_closure_chain.js
T
root 1b87e212f9 test: 新增内存占用基准用例与留存内存采集
bench 每轮采集在 workload 后 promote 根持有/会话引用的 epoch 对象并强制
一次 full GC,新增 peak_bytes / retained_bytes / retained_objects 三口径
(原 session_* 字段为执行期累计分配,不反映 workload 后留存);dispatch
循环增加 session 堆高水位采样,VM 暴露 session_bytes_peak 与
collect_session_gc。新增 8 个 mem_* 压力用例(对象图/字符串/闭包链/数组
增删/跨调用保留/Map/Set 保留/字符串拼接),基线扩至 76 条目。
2026-09-10 08:18:52 +00:00

18 lines
515 B
JavaScript

// 闭包/upvalue 长链留存:10000 层闭包,每层同时捕获前层闭包与自身 payload 对象,
// 自 head 沿 prev 链回溯第一层时全部驻留(函数对象、upvalue cell、payload 串)
var head = null;
for (var i = 0; i < 10000; i++) {
(function (prev, payload) {
head = function () {
return [prev, payload];
};
})(head, { id: i, data: "closure_payload_padding_" + i });
}
var cur = head;
var hops = 0;
while (cur !== null) {
cur = cur()[0];
hops++;
}
hops === 10000