public static void release(Object array) {
    int order;
    if (array instanceof boolean[]) {
      order = TSDataType.BOOLEAN.serialize();
    } else if (array instanceof int[]) {
      order = TSDataType.INT32.serialize();
    } else if (array instanceof long[]) {
      order = TSDataType.INT64.serialize();
    } else if (array instanceof float[]) {
      order = TSDataType.FLOAT.serialize();
    } else if (array instanceof double[]) {
      order = TSDataType.DOUBLE.serialize();
    } else if (array instanceof Binary[]) {
      Arrays.fill((Binary[]) array, null);
      order = TSDataType.TEXT.serialize();
    } else {
      throw new UnSupportedDataTypeException(array.getClass().toString());
    }

    StorageEngineMemoryMetrics.getInstance().incPamRelease();
    synchronized (POOLED_ARRAYS[order]) {
      ArrayDeque<Object> arrays = POOLED_ARRAYS[order];
      if (arrays.size() < LIMITS[order]) {
        arrays.add(array);
      } else {
        StorageEngineMemoryMetrics.getInstance().incPamReleaseFailure();
      }
    }
  }
This method is called when bringing back data array

@param array data array to be released
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/memory/PrimitiveArrayManager.java