public byte[] get(int minimumLength) {
    SoftReference<byte[]> reference = cache.get();
    byte[] result = (reference != null) ? reference.get() : null;
    if (result == null || result.length < minimumLength) {
      result = new byte[minimumLength];
      if (minimumLength <= maximumArraySize) {
        cache.set(new SoftReference<>(result));
      }
    }
    return result;
  }
Returns a byte array whose length it at least minimumLength.
NOTE: the same thread can not safely call this method again
until it has finished using the byte array returned by a previous call.
If minimumLength is larger than this cache's maximumArraySize
then the returned byte array will not be cached.

@param minimumLength the minimum length of the byte array
@return a byte array, owned by this thread, whose length is at least minimumLength.
geode-serialization/src/main/java/org/apache/geode/internal/serialization/ThreadLocalByteArrayCache.java