Class PooledByteBufAllocator

java.lang.Object
io.netty.buffer.AbstractByteBufAllocator
io.netty.buffer.PooledByteBufAllocator
All Implemented Interfaces:
ByteBufAllocator, ByteBufAllocatorMetricProvider

public class PooledByteBufAllocator extends AbstractByteBufAllocator implements ByteBufAllocatorMetricProvider
  • Field Details

    • logger

      private static final InternalLogger logger
    • DEFAULT_NUM_HEAP_ARENA

      private static final int DEFAULT_NUM_HEAP_ARENA
    • DEFAULT_NUM_DIRECT_ARENA

      private static final int DEFAULT_NUM_DIRECT_ARENA
    • DEFAULT_PAGE_SIZE

      private static final int DEFAULT_PAGE_SIZE
    • DEFAULT_MAX_ORDER

      private static final int DEFAULT_MAX_ORDER
    • DEFAULT_SMALL_CACHE_SIZE

      private static final int DEFAULT_SMALL_CACHE_SIZE
    • DEFAULT_NORMAL_CACHE_SIZE

      private static final int DEFAULT_NORMAL_CACHE_SIZE
    • DEFAULT_MAX_CACHED_BUFFER_CAPACITY

      static final int DEFAULT_MAX_CACHED_BUFFER_CAPACITY
    • DEFAULT_CACHE_TRIM_INTERVAL

      private static final int DEFAULT_CACHE_TRIM_INTERVAL
    • DEFAULT_CACHE_TRIM_INTERVAL_MILLIS

      private static final long DEFAULT_CACHE_TRIM_INTERVAL_MILLIS
    • DEFAULT_USE_CACHE_FOR_ALL_THREADS

      private static final boolean DEFAULT_USE_CACHE_FOR_ALL_THREADS
    • DEFAULT_DIRECT_MEMORY_CACHE_ALIGNMENT

      private static final int DEFAULT_DIRECT_MEMORY_CACHE_ALIGNMENT
    • DEFAULT_MAX_CACHED_BYTEBUFFERS_PER_CHUNK

      static final int DEFAULT_MAX_CACHED_BYTEBUFFERS_PER_CHUNK
    • DEFAULT_DISABLE_CACHE_FINALIZERS_FOR_FAST_THREAD_LOCAL_THREADS

      private static final boolean DEFAULT_DISABLE_CACHE_FINALIZERS_FOR_FAST_THREAD_LOCAL_THREADS
    • MIN_PAGE_SIZE

      private static final int MIN_PAGE_SIZE
      See Also:
    • MAX_CHUNK_SIZE

      private static final int MAX_CHUNK_SIZE
      See Also:
    • CACHE_NOT_USED

      private static final int CACHE_NOT_USED
      See Also:
    • trimTask

      private final Runnable trimTask
    • DEFAULT

      public static final PooledByteBufAllocator DEFAULT
    • heapArenas

      private final PoolArena<byte[]>[] heapArenas
    • directArenas

      private final PoolArena<ByteBuffer>[] directArenas
    • smallCacheSize

      private final int smallCacheSize
    • normalCacheSize

      private final int normalCacheSize
    • heapArenaMetrics

      private final List<PoolArenaMetric> heapArenaMetrics
    • directArenaMetrics

      private final List<PoolArenaMetric> directArenaMetrics
    • threadCache

    • chunkSize

      private final int chunkSize
    • metric

      private final PooledByteBufAllocatorMetric metric
  • Constructor Details

    • PooledByteBufAllocator

      public PooledByteBufAllocator()
    • PooledByteBufAllocator

      public PooledByteBufAllocator(boolean preferDirect)
    • PooledByteBufAllocator

      public PooledByteBufAllocator(int nHeapArena, int nDirectArena, int pageSize, int maxOrder)
    • PooledByteBufAllocator

      @Deprecated public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder)
    • PooledByteBufAllocator

      @Deprecated public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder, int tinyCacheSize, int smallCacheSize, int normalCacheSize)
    • PooledByteBufAllocator

      @Deprecated public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder, int tinyCacheSize, int smallCacheSize, int normalCacheSize, boolean useCacheForAllThreads)
    • PooledByteBufAllocator

      public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder, int smallCacheSize, int normalCacheSize, boolean useCacheForAllThreads)
    • PooledByteBufAllocator

      @Deprecated public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder, int tinyCacheSize, int smallCacheSize, int normalCacheSize, boolean useCacheForAllThreads, int directMemoryCacheAlignment)
    • PooledByteBufAllocator

      public PooledByteBufAllocator(boolean preferDirect, int nHeapArena, int nDirectArena, int pageSize, int maxOrder, int smallCacheSize, int normalCacheSize, boolean useCacheForAllThreads, int directMemoryCacheAlignment)
  • Method Details

    • newArenaArray

      private static <T> PoolArena<T>[] newArenaArray(int size)
    • validateAndCalculatePageShifts

      private static int validateAndCalculatePageShifts(int pageSize, int alignment)
    • validateAndCalculateChunkSize

      private static int validateAndCalculateChunkSize(int pageSize, int maxOrder)
    • newHeapBuffer

      protected ByteBuf newHeapBuffer(int initialCapacity, int maxCapacity)
      Description copied from class: AbstractByteBufAllocator
      Create a heap ByteBuf with the given initialCapacity and maxCapacity.
      Specified by:
      newHeapBuffer in class AbstractByteBufAllocator
    • newDirectBuffer

      protected ByteBuf newDirectBuffer(int initialCapacity, int maxCapacity)
      Description copied from class: AbstractByteBufAllocator
      Create a direct ByteBuf with the given initialCapacity and maxCapacity.
      Specified by:
      newDirectBuffer in class AbstractByteBufAllocator
    • defaultNumHeapArena

      public static int defaultNumHeapArena()
      Default number of heap arenas - System Property: io.netty.allocator.numHeapArenas - default 2 * cores
    • defaultNumDirectArena

      public static int defaultNumDirectArena()
      Default number of direct arenas - System Property: io.netty.allocator.numDirectArenas - default 2 * cores
    • defaultPageSize

      public static int defaultPageSize()
      Default buffer page size - System Property: io.netty.allocator.pageSize - default 8192
    • defaultMaxOrder

      public static int defaultMaxOrder()
      Default maximum order - System Property: io.netty.allocator.maxOrder - default 9
    • defaultDisableCacheFinalizersForFastThreadLocalThreads

      public static boolean defaultDisableCacheFinalizersForFastThreadLocalThreads()
      Default control creation of PoolThreadCache finalizers for FastThreadLocalThreads - System Property: io.netty.allocator.disableCacheFinalizersForFastThreadLocalThreads - default false
    • defaultUseCacheForAllThreads

      public static boolean defaultUseCacheForAllThreads()
      Default thread caching behavior - System Property: io.netty.allocator.useCacheForAllThreads - default false
    • defaultPreferDirect

      public static boolean defaultPreferDirect()
      Default prefer direct - System Property: io.netty.noPreferDirect - default false
    • defaultTinyCacheSize

      @Deprecated public static int defaultTinyCacheSize()
      Deprecated.
      Tiny caches have been merged into small caches.
      Default tiny cache size - default 0
    • defaultSmallCacheSize

      public static int defaultSmallCacheSize()
      Default small cache size - System Property: io.netty.allocator.smallCacheSize - default 256
    • defaultNormalCacheSize

      public static int defaultNormalCacheSize()
      Default normal cache size - System Property: io.netty.allocator.normalCacheSize - default 64
    • isDirectMemoryCacheAlignmentSupported

      public static boolean isDirectMemoryCacheAlignmentSupported()
      Return true if direct memory cache alignment is supported, false otherwise.
    • isDirectBufferPooled

      public boolean isDirectBufferPooled()
      Description copied from interface: ByteBufAllocator
      Returns true if direct ByteBuf's are pooled
      Specified by:
      isDirectBufferPooled in interface ByteBufAllocator
    • hasThreadLocalCache

      @Deprecated public boolean hasThreadLocalCache()
      Deprecated.
      will be removed Returns true if the calling Thread has a ThreadLocal cache for the allocated buffers.
    • freeThreadLocalCache

      @Deprecated public void freeThreadLocalCache()
      Deprecated.
      will be removed Free all cached buffers for the calling Thread.
    • useCacheFinalizers

      private static boolean useCacheFinalizers(Thread current)
    • metric

      Description copied from interface: ByteBufAllocatorMetricProvider
      Specified by:
      metric in interface ByteBufAllocatorMetricProvider
    • numHeapArenas

      @Deprecated public int numHeapArenas()
      Return the number of heap arenas.
    • numDirectArenas

      @Deprecated public int numDirectArenas()
      Return the number of direct arenas.
    • heapArenas

      @Deprecated public List<PoolArenaMetric> heapArenas()
      Return a List of all heap PoolArenaMetrics that are provided by this pool.
    • directArenas

      @Deprecated public List<PoolArenaMetric> directArenas()
      Return a List of all direct PoolArenaMetrics that are provided by this pool.
    • numThreadLocalCaches

      @Deprecated public int numThreadLocalCaches()
      Return the number of thread local caches used by this PooledByteBufAllocator.
    • numThreadLocalCaches

      private static int numThreadLocalCaches(PoolArena<?>[] arenas)
    • tinyCacheSize

      @Deprecated public int tinyCacheSize()
      Return the size of the tiny cache.
    • smallCacheSize

      @Deprecated public int smallCacheSize()
      Return the size of the small cache.
    • normalCacheSize

      @Deprecated public int normalCacheSize()
      Return the size of the normal cache.
    • chunkSize

      @Deprecated public final int chunkSize()
      Return the chunk size for an arena.
    • usedHeapMemory

      final long usedHeapMemory()
    • usedDirectMemory

      final long usedDirectMemory()
    • usedMemory

      private static long usedMemory(PoolArena<?>[] arenas)
    • pinnedHeapMemory

      public final long pinnedHeapMemory()
      Returns the number of bytes of heap memory that is currently pinned to heap buffers allocated by a ByteBufAllocator, or -1 if unknown. A buffer can pin more memory than its capacity might indicate, due to implementation details of the allocator.
    • pinnedDirectMemory

      public final long pinnedDirectMemory()
      Returns the number of bytes of direct memory that is currently pinned to direct buffers allocated by a ByteBufAllocator, or -1 if unknown. A buffer can pin more memory than its capacity might indicate, due to implementation details of the allocator.
    • pinnedMemory

      private static long pinnedMemory(PoolArena<?>[] arenas)
    • threadCache

      final PoolThreadCache threadCache()
    • trimCurrentThreadCache

      public boolean trimCurrentThreadCache()
      Trim thread local cache for the current Thread, which will give back any cached memory that was not allocated frequently since the last trim operation. Returns true if a cache for the current Thread exists and so was trimmed, false otherwise.
    • dumpStats

      public String dumpStats()
      Returns the status of the allocator (which contains all metrics) as string. Be aware this may be expensive and so should not called too frequently.