mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
perf: 执行期 session 字符串 GC 阈值回收(超 32MiB 触发,跳过对象 sweep)
new_string_owned 分配前做廉价阈值检查(1 次 usize 比较 + 阈值读取), 超 session_gc_threshold 即调 collect_strings_only:clear_all_marks → 完整 mark(现成)→ sweep_session_strings(现成),跳过对象 sweep 搬移, builtin 层对象裸指针跨分配点零悬垂面。触发检查在登记之前——返回值 尚未根化,登记后回收会被本次 GC 判死致悬垂。分配前触发亦使 GC 期间 新串仍在栈上未登记,天然安全。 长循环字符串累积场景(REPL 常驻 / test262 长测试 / kernel_batch 复用) session 内存从无界变为有界(≤ 阈值 + 存活串);bench gc_trigger_count 恢复有效(string_build 由 0 → 2 次触发)。07.2 rope 死节点回收依赖本机制。
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
var ITERATIONS = 1000000;
|
||||
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var s = "str" + i;
|
||||
sum += s.length;
|
||||
}
|
||||
sum
|
||||
Reference in New Issue
Block a user