mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-25 19:21:11 +08:00
perf: 对象统一入口 Box 化合并对象表退役晋升档
This commit is contained in:
@@ -424,15 +424,16 @@ fn promote_then_reset_keeps_entries_alive() {
|
||||
assert_eq!(text, "true|false");
|
||||
}
|
||||
|
||||
/// drop 记账:无引用的栈对象被收集时释放状态盒(freed 字节增长)。
|
||||
/// drop 记账:无引用的栈对象被收集时释放状态盒并计入释放字节。
|
||||
/// 低阈值使执行期收集在循环内触发(默认 32MiB 阈值下本负载不触发收集)。
|
||||
#[test]
|
||||
fn drop_accounts_capability_bytes() {
|
||||
let mut vm = make_vm();
|
||||
let mut config = KernelConfig::minimal();
|
||||
config.set_session_gc_threshold(1);
|
||||
let mut vm = Vm::with_kernel_core(KernelCore::new(config));
|
||||
eval_in(&mut vm, "for (var i = 0; i < 500; i++) { new DisposableStack(); } 0").expect("run");
|
||||
let before = vm.session_gc_stats().total_bytes_freed;
|
||||
vm.reset();
|
||||
let after = vm.session_gc_stats().total_bytes_freed;
|
||||
assert!(after > before, "reset 应回收栈对象状态盒,before={before} after={after}");
|
||||
let freed = vm.session_gc_stats().total_bytes_freed;
|
||||
assert!(freed > 0, "收集应释放死栈对象状态盒并记账,freed={freed}");
|
||||
}
|
||||
|
||||
/// full_reset(dirty 重建):global 与 object 家族重建后 DisposableStack 仍完整可用
|
||||
|
||||
Reference in New Issue
Block a user