Use alloc().heapBuffer(...) to allocate new heap buffer.
Motivation Underlying array allocations in UnpooledHeapByteBuf are intended be done via the protected allocateArray(int) method, so that they can be tracked and/or overridden by subclasses, for example UnpooledByteBufAllocator$InstrumentedUnpooledHeapByteBuf or #8015. But it looks like an explicit allocation was missed in the copy(int,int) method. Modification Just use alloc().heapBuffer(...) for the allocation Result No possibility of "missing" array allocations when ByteBuf#copy is used.
This commit is contained in:
parent
6862ab76c0
commit
695aa0959d
@ -536,9 +536,7 @@ public class UnpooledHeapByteBuf extends AbstractReferenceCountedByteBuf {
|
|||||||
@Override
|
@Override
|
||||||
public ByteBuf copy(int index, int length) {
|
public ByteBuf copy(int index, int length) {
|
||||||
checkIndex(index, length);
|
checkIndex(index, length);
|
||||||
byte[] copiedArray = PlatformDependent.allocateUninitializedArray(length);
|
return alloc().heapBuffer(length, maxCapacity()).writeBytes(array, index, length);
|
||||||
System.arraycopy(array, index, copiedArray, 0, length);
|
|
||||||
return new UnpooledHeapByteBuf(alloc(), copiedArray, maxCapacity());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ByteBuffer internalNioBuffer() {
|
private ByteBuffer internalNioBuffer() {
|
||||||
|
Loading…
Reference in New Issue
Block a user