mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
1b87e212f9
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 条目。
18 lines
515 B
JavaScript
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
|