Sane problems as malloc and free. And due to GC being abstracted and faster amortized time per allocation you have more resources to work with.
Look at the Metronome GC from IBM
You basically have to guarantee a certain level of resources or a certain allocation rate. Things you have to do anyways in non GCd languages.
This whole conversation is moot. Hard real time does not mesh with dynamic allocation, unless your allocation behaviour is very well understood and predictable, in which case it ain't hard to design a GC that works for it.
Malloc/free are not free. They have their own limitations and performance characteristics.
Although non real time GCs can defrag the heap, it’s a huge problem to do it in a real time GC.