namespace; include rt; let keep; unchecked fn churn(n) { let i = 0, p; while (i < n) { p = rt.new(10); p[0] = i; if (i % 100 == 0) keep = p; i++; } return 0; } fn main() { let base = rt.live_objects(), f; churn(1000); rt.put_n(rt.live_objects() - base); rt.put_c(' '); f = rt.gc(); rt.put_n(f >= 990); rt.put_c(' '); // conservative: a stale word or two may keep one alive rt.put_n(keep[0]); rt.put_c(' '); // the one a global still points at survives churn(200000); // 3.2m words through a 393k word heap: needs the automatic collector rt.put_n(rt.gc_runs > 1); rt.put_c(' '); rt.put_n(keep[0]); rt.put_c(10); return 0; }