ReGc
A garbage collector that mixes Reference counting and mark sweeping
Example
Rust
;
let context = new;
let x = context.alloc;
*x.r.borrow_mut = Some;
context.gc;
*x.r.borrow_mut = None;
init
Output
[2023-07-18T00:56:30Z TRACE regc] alloc regc::test::Foo 0x2876afc19e0
[2023-07-18T00:56:30Z INFO regc] call gc
[2023-07-18T00:56:30Z INFO regc] begin gc
[2023-07-18T00:56:30Z INFO regc] trace 1 target
[2023-07-18T00:56:30Z INFO regc] hold 1 target
[2023-07-18T00:56:30Z INFO regc] drop 0 target
[2023-07-18T00:56:30Z INFO regc] end gc 19µs
[2023-07-18T00:56:30Z TRACE regc] drop 0x2876afc19e0
[2023-07-18T00:56:30Z TRACE regc] free 0x2876afc19e0
[2023-07-18T00:56:30Z INFO regc] drop gc
[2023-07-18T00:56:30Z INFO regc] call gc
[2023-07-18T00:56:30Z INFO regc] begin gc
[2023-07-18T00:56:30Z INFO regc] end gc 200ns
Drop for Foo