/// <summary>Recycle the given byte array.</summary> /// <remarks> /// Recycle the given byte array. /// The byte array may or may not be allocated /// by the /// <see cref="NewByteArray(int)"/> /// method. /// This is a non-blocking call. /// </remarks> public override int Release(byte[] array) { Preconditions.CheckNotNull(array); if (Log.IsDebugEnabled()) { debugMessage.Get().Append("recycle: array.length=").Append(array.Length); } int freeQueueSize; if (array.Length == 0) { freeQueueSize = -1; } else { ByteArrayManager.FixedLengthManager manager = managers.Get(array.Length, false); freeQueueSize = manager == null ? -1 : manager.Recycle(array); } if (Log.IsDebugEnabled()) { debugMessage.Get().Append(", freeQueueSize=").Append(freeQueueSize); LogDebugMessage(); } return(freeQueueSize); }