@Override
  public boolean release() {
    return refCnt.release();
  }
Checks that there are still references to the buffer. This protects against the case where a
ByteBuff method (i.e. slice, get, etc) could be called against a buffer whose backing data may
have been released. We only need to do this check if the refCnt has a recycler. If there's no
recycler, the backing data will be handled by normal java GC and won't get incorrectly
released. So we can avoid the overhead of checking the refCnt on every call. See HBASE-27710.
hbase-common/src/main/java/org/apache/hadoop/hbase/nio/ByteBuff.java