private ByteBuffer allocSpareBufferSlice(short size) {
    // check whether enough space to be directly allocate
    if (this.pageBuffer.capacity() - spareOffset - memberNum * SchemaFileConfig.SEG_OFF_DIG
        < size + SchemaFileConfig.SEG_OFF_DIG) {
      // since this may occur frequently, throw exception here may be inefficient
      return null;
    }

    pageBuffer.clear();
    pageBuffer.position(spareOffset);
    pageBuffer.limit(spareOffset + size);

    return pageBuffer.slice();
  }
This method will allocate DIRECTLY from {@link #spareOffset} and return corresponding
ByteBuffer slice. It will not update {@link #segOffsetLst} nor {@link #segCacheMap}, since no
segment initiated here.

@param size target size of the ByteBuffer
@return ByteBuffer return null if {@linkplain SchemaPageOverflowException} to improve
    efficiency
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SegmentedPage.java