Option 1: Tune max heap size to optimize GC frequency | kCluster, pCluster, and fragmentation
Tactic 2: Tune -Xk and -Xp to minimize fragmentation
If the free space after GC increases as it should, but the time since the last Allocation Failure in the "GC cycle length and distribution" is always small, there might be some large objects or heap fragmentations. You can try to tune the -Xk/-Xp parameters to remove most of the fragmentations.