@Override
  public void debugDumpShort(StringBuilder sb) {
    sb.append("\nDefrag counters: ");
    for (int i = 0; i < defragCounters.length; ++i) {
      sb.append(defragCounters[i].get()).append(", ");
    }
    sb.append("\nAllocator state:");
    int unallocCount = 0, fullCount = 0;
    long totalFree = 0;
    for (Arena arena : arenas) {
      Integer result = arena.debugDumpShort(sb);
      if (result == null) {
        ++unallocCount;
      } else if (result == 0) {
        ++fullCount;
      } else {
        totalFree += result;
      }
    }
    sb.append("\nTotal available and allocated: ").append(totalFree).append(
        "; unallocated arenas: ").append(unallocCount).append(
        "; full arenas ").append(fullCount);
    sb.append("\n");
  }
Arbitrarily, we start getting the state from Allocator. Allocator calls MM which calls
the policies that call the eviction dispatcher that calls the caches. See init - these all
are connected in a cycle, so we need to make sure the who-calls-whom order is definite.
llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java