Languages like C, C++, Go, allows for part of the code using custom RAM allocators. If one known the RAM usage pattern (e.g. for a DBMS index), then he can create an allocation pattern reducing RAM fragmentation.
TODO study CTMalloc that it is a RAM management tool that do not defragment too much RAM.
FACT JVM is putting too much pressure on GC because everything can be an object and there is no value semantic. Languages like GO have a simpler GC algo, and they are more predictable.