Class PooledByteBufAllocator

    • Field Detail

      • 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
      • trimTask

        private final java.lang.Runnable trimTask
      • heapArenas

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

        private final PoolArena<java.nio.ByteBuffer>[] directArenas
      • smallCacheSize

        private final int smallCacheSize
      • normalCacheSize

        private final int normalCacheSize
      • heapArenaMetrics

        private final java.util.List<PoolArenaMetric> heapArenaMetrics
      • directArenaMetrics

        private final java.util.List<PoolArenaMetric> directArenaMetrics
      • chunkSize

        private final int chunkSize
    • Constructor Detail

      • PooledByteBufAllocator

        public PooledByteBufAllocator()
      • PooledByteBufAllocator

        public PooledByteBufAllocator​(boolean preferDirect)
      • PooledByteBufAllocator

        public PooledByteBufAllocator​(int nHeapArena,
                                      int nDirectArena,
                                      int pageSize,
                                      int maxOrder)
      • 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 Detail

      • 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)
      • 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.
      • 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​(java.lang.Thread current)
      • 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)
      • 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 java.lang.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.