On devices with smaller memory we can get the runtime bail out:
$ MONO_GC_DEBUG=bridge=Bridge MONO_GC_PARAMS=minor=split MONO_ENV_OPTIONS=--gc=sgen MONO_PATH=/home/lewurm/monoperf/mono/mcs/class/lib/net_4_x ../../mono/mini/mono sgen-bridge-major-fragmentation.exe --optimize=all —debug
Error: Garbage collector could not allocate 6053368 bytes of memory for finalize-ready.
that's around 1.5 million objects in that queue, the test application generates around 2 million objects with a finalizer. the question is if the GC should really wait that long or do something about it earlier (and thus free up memory).
Marking as CONFIRMED and enhancement.