Hi Mike,

Is Blazegraph instances running within Java 9+ JVM ?
I assume they are configured using G1GC garbage collector?
Did you also try enabling the -XX+UseStringDeduplication to see if it can at least help a little and reduce some of the heap overhead on long lived strings?
https://github.com/blazegraph/database/blob/master/blazegraph-rpm/src/rpm/conf/blazegraph

Also, has the team ever seen any Humongous objects fragmenting the old gen? Many sometimes can cause the heap to be fragmented as mentioned within
https://www.oracle.com/technical-resources/articles/java/g1gc.html

There's also a few things to consider within that G1GC article that might be worth looking into or thinking about from a data <--> memory perspective since you don't have much control over heap usage in many places within Blazegraph.

Hope this helps a bit.  If I think of any other quick patches I'll let you know.