You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Report live bytes as well as line usage, and size the heap from live bytes #83
Immix counts a whole 128-byte line as used when any live object touches it, and the next collection target is computed from those line bytes, so fragmentation and the 100% target free space compound and a process can hold about twice its live data. Exposing live bytes next to line bytes (a MEM_INFO_* value) would make this measurable, and basing the target on live bytes would shrink it.
Status: can be done entirely in libhxcpp; no Haxe change needed.
The MEM_INFO_* values come from the runtime's enum in src/hx/gc/Immix.cpp (around line 267). Haxe's std/cpp/vm/Gc.hx only gives names to 0 to 3 as plain constants. A new value for live bytes works through Gc.memInfo64(<value>) straight away; a named constant in Haxe's std would be nice to have, not required.
Note for the second half: sizing the heap from live bytes changes when collections happen, so for a 6.x release it should be opt-in (a define) or come with measurements.
Activity
dimensionscape commentedon Oct 19, 2026
Status: can be done entirely in libhxcpp; no Haxe change needed.
The
MEM_INFO_*values come from the runtime's enum insrc/hx/gc/Immix.cpp(around line 267). Haxe'sstd/cpp/vm/Gc.hxonly gives names to 0 to 3 as plain constants. A new value for live bytes works throughGc.memInfo64(<value>)straight away; a named constant in Haxe's std would be nice to have, not required.Note for the second half: sizing the heap from live bytes changes when collections happen, so for a 6.x release it should be opt-in (a define) or come with measurements.
Report live bytes next to line usage