private int allocateWithSplit(MemoryBuffer[] dest, long[] destHeaders, int destIx, int destCount,
      int freeListIx, int allocSize, int startArenaIx, int arenaCount, int maxSplitFreeListIx) {
    int arenaIx = startArenaIx;
    do {
      int newDestIx = arenas[arenaIx].allocateWithSplit(
          freeListIx, dest, destHeaders, destIx, destCount, allocSize, maxSplitFreeListIx);
      if (newDestIx == destCount) return newDestIx;
      assert newDestIx != -1;
      destIx = newDestIx;
      arenaIx = getNextIx(arenaIx, arenaCount, 1);
    } while (arenaIx != startArenaIx);
    return destIx;
  }
Tries to allocate destCount - destIx blocks, waiting for locks and splitting the larger
blocks if the correct sized blocks are not available. Args the same as allocateFast.
llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java