public abstract class io.netty.util.Recycler<T>
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: io.netty.util.Recycler
super_class: java.lang.Object
{
private static final io.netty.util.internal.logging.InternalLogger logger;
descriptor: Lio/netty/util/internal/logging/InternalLogger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final io.netty.util.Recycler$Handle NOOP_HANDLE;
descriptor: Lio/netty/util/Recycler$Handle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.atomic.AtomicInteger ID_GENERATOR;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int OWN_THREAD_ID;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_INITIAL_MAX_CAPACITY_PER_THREAD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4096
private static final int DEFAULT_MAX_CAPACITY_PER_THREAD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int INITIAL_CAPACITY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MAX_SHARED_CAPACITY_FACTOR;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MAX_DELAYED_QUEUES_PER_THREAD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int LINK_CAPACITY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int RATIO;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final int maxCapacityPerThread;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int maxSharedCapacityFactor;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int ratioMask;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int maxDelayedQueuesPerThread;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.netty.util.concurrent.FastThreadLocal<io.netty.util.Recycler$Stack<T>> threadLocal;
descriptor: Lio/netty/util/concurrent/FastThreadLocal;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lio/netty/util/concurrent/FastThreadLocal<Lio/netty/util/Recycler$Stack<TT;>;>;
private static final io.netty.util.concurrent.FastThreadLocal<java.util.Map<io.netty.util.Recycler$Stack<?>, io.netty.util.Recycler$WeakOrderQueue>> DELAYED_RECYCLED;
descriptor: Lio/netty/util/concurrent/FastThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lio/netty/util/concurrent/FastThreadLocal<Ljava/util/Map<Lio/netty/util/Recycler$Stack<*>;Lio/netty/util/Recycler$WeakOrderQueue;>;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: ldc Lio/netty/util/Recycler;
invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
putstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
1: new io.netty.util.Recycler$1
dup
invokespecial io.netty.util.Recycler$1.<init>:()V
putstatic io.netty.util.Recycler.NOOP_HANDLE:Lio/netty/util/Recycler$Handle;
2: new java.util.concurrent.atomic.AtomicInteger
dup
ldc -2147483648
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
putstatic io.netty.util.Recycler.ID_GENERATOR:Ljava/util/concurrent/atomic/AtomicInteger;
3: getstatic io.netty.util.Recycler.ID_GENERATOR:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
putstatic io.netty.util.Recycler.OWN_THREAD_ID:I
4: ldc "io.netty.recycler.maxCapacityPerThread"
5: ldc "io.netty.recycler.maxCapacity"
sipush 4096
invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
6: invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
istore 0
start local 0 7: iload 0
ifge 9
8: sipush 4096
istore 0
9: StackMap locals: int
StackMap stack:
iload 0
putstatic io.netty.util.Recycler.DEFAULT_MAX_CAPACITY_PER_THREAD:I
10: iconst_2
11: ldc "io.netty.recycler.maxSharedCapacityFactor"
12: iconst_2
13: invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
14: invokestatic java.lang.Math.max:(II)I
putstatic io.netty.util.Recycler.MAX_SHARED_CAPACITY_FACTOR:I
15: iconst_0
16: ldc "io.netty.recycler.maxDelayedQueuesPerThread"
17: invokestatic io.netty.util.NettyRuntime.availableProcessors:()I
iconst_2
imul
18: invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
19: invokestatic java.lang.Math.max:(II)I
putstatic io.netty.util.Recycler.MAX_DELAYED_QUEUES_PER_THREAD:I
20: ldc "io.netty.recycler.linkCapacity"
bipush 16
invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
bipush 16
invokestatic java.lang.Math.max:(II)I
21: invokestatic io.netty.util.internal.MathUtil.safeFindNextPositivePowerOfTwo:(I)I
putstatic io.netty.util.Recycler.LINK_CAPACITY:I
22: ldc "io.netty.recycler.ratio"
bipush 8
invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
invokestatic io.netty.util.internal.MathUtil.safeFindNextPositivePowerOfTwo:(I)I
putstatic io.netty.util.Recycler.RATIO:I
23: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
ifeq 34
24: getstatic io.netty.util.Recycler.DEFAULT_MAX_CAPACITY_PER_THREAD:I
ifne 30
25: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.maxCapacityPerThread: disabled"
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
26: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.maxSharedCapacityFactor: disabled"
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
27: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.linkCapacity: disabled"
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
28: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.ratio: disabled"
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
29: goto 34
30: StackMap locals:
StackMap stack:
getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.maxCapacityPerThread: {}"
getstatic io.netty.util.Recycler.DEFAULT_MAX_CAPACITY_PER_THREAD:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
31: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.maxSharedCapacityFactor: {}"
getstatic io.netty.util.Recycler.MAX_SHARED_CAPACITY_FACTOR:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
32: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.linkCapacity: {}"
getstatic io.netty.util.Recycler.LINK_CAPACITY:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
33: getstatic io.netty.util.Recycler.logger:Lio/netty/util/internal/logging/InternalLogger;
ldc "-Dio.netty.recycler.ratio: {}"
getstatic io.netty.util.Recycler.RATIO:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
34: StackMap locals:
StackMap stack:
getstatic io.netty.util.Recycler.DEFAULT_MAX_CAPACITY_PER_THREAD:I
sipush 256
invokestatic java.lang.Math.min:(II)I
putstatic io.netty.util.Recycler.INITIAL_CAPACITY:I
end local 0 35: new io.netty.util.Recycler$3
dup
invokespecial io.netty.util.Recycler$3.<init>:()V
36: putstatic io.netty.util.Recycler.DELAYED_RECYCLED:Lio/netty/util/concurrent/FastThreadLocal;
37: return
LocalVariableTable:
Start End Slot Name Signature
7 35 0 maxCapacityPerThread I
protected void <init>();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getstatic io.netty.util.Recycler.DEFAULT_MAX_CAPACITY_PER_THREAD:I
invokespecial io.netty.util.Recycler.<init>:(I)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/Recycler<TT;>;
protected void <init>(int);
descriptor: (I)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
getstatic io.netty.util.Recycler.MAX_SHARED_CAPACITY_FACTOR:I
invokespecial io.netty.util.Recycler.<init>:(II)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/Recycler<TT;>;
0 2 1 maxCapacityPerThread I
MethodParameters:
Name Flags
maxCapacityPerThread
protected void <init>(int, int);
descriptor: (II)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
iload 2
getstatic io.netty.util.Recycler.RATIO:I
getstatic io.netty.util.Recycler.MAX_DELAYED_QUEUES_PER_THREAD:I
invokespecial io.netty.util.Recycler.<init>:(IIII)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/Recycler<TT;>;
0 2 1 maxCapacityPerThread I
0 2 2 maxSharedCapacityFactor I
MethodParameters:
Name Flags
maxCapacityPerThread
maxSharedCapacityFactor
protected void <init>(int, int, int, int);
descriptor: (IIII)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new io.netty.util.Recycler$2
dup
aload 0
invokespecial io.netty.util.Recycler$2.<init>:(Lio/netty/util/Recycler;)V
putfield io.netty.util.Recycler.threadLocal:Lio/netty/util/concurrent/FastThreadLocal;
2: aload 0
iload 3
invokestatic io.netty.util.internal.MathUtil.safeFindNextPositivePowerOfTwo:(I)I
iconst_1
isub
putfield io.netty.util.Recycler.ratioMask:I
3: iload 1
ifgt 8
4: aload 0
iconst_0
putfield io.netty.util.Recycler.maxCapacityPerThread:I
5: aload 0
iconst_1
putfield io.netty.util.Recycler.maxSharedCapacityFactor:I
6: aload 0
iconst_0
putfield io.netty.util.Recycler.maxDelayedQueuesPerThread:I
7: goto 11
8: StackMap locals: io.netty.util.Recycler int int int int
StackMap stack:
aload 0
iload 1
putfield io.netty.util.Recycler.maxCapacityPerThread:I
9: aload 0
iconst_1
iload 2
invokestatic java.lang.Math.max:(II)I
putfield io.netty.util.Recycler.maxSharedCapacityFactor:I
10: aload 0
iconst_0
iload 4
invokestatic java.lang.Math.max:(II)I
putfield io.netty.util.Recycler.maxDelayedQueuesPerThread:I
11: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/netty/util/Recycler<TT;>;
0 12 1 maxCapacityPerThread I
0 12 2 maxSharedCapacityFactor I
0 12 3 ratio I
0 12 4 maxDelayedQueuesPerThread I
MethodParameters:
Name Flags
maxCapacityPerThread
maxSharedCapacityFactor
ratio
maxDelayedQueuesPerThread
public final T get();
descriptor: ()Ljava/lang/Object;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield io.netty.util.Recycler.maxCapacityPerThread:I
ifne 2
1: aload 0
getstatic io.netty.util.Recycler.NOOP_HANDLE:Lio/netty/util/Recycler$Handle;
invokevirtual io.netty.util.Recycler.newObject:(Lio/netty/util/Recycler$Handle;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.netty.util.Recycler.threadLocal:Lio/netty/util/concurrent/FastThreadLocal;
invokevirtual io.netty.util.concurrent.FastThreadLocal.get:()Ljava/lang/Object;
checkcast io.netty.util.Recycler$Stack
astore 1
start local 1 3: aload 1
invokevirtual io.netty.util.Recycler$Stack.pop:()Lio/netty/util/Recycler$DefaultHandle;
astore 2
start local 2 4: aload 2
ifnonnull 7
5: aload 1
invokevirtual io.netty.util.Recycler$Stack.newHandle:()Lio/netty/util/Recycler$DefaultHandle;
astore 2
6: aload 2
aload 0
aload 2
invokevirtual io.netty.util.Recycler.newObject:(Lio/netty/util/Recycler$Handle;)Ljava/lang/Object;
putfield io.netty.util.Recycler$DefaultHandle.value:Ljava/lang/Object;
7: StackMap locals: io.netty.util.Recycler$Stack io.netty.util.Recycler$DefaultHandle
StackMap stack:
aload 2
getfield io.netty.util.Recycler$DefaultHandle.value:Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/netty/util/Recycler<TT;>;
3 8 1 stack Lio/netty/util/Recycler$Stack<TT;>;
4 8 2 handle Lio/netty/util/Recycler$DefaultHandle<TT;>;
Signature: ()TT;
public final boolean recycle(T, io.netty.util.Recycler$Handle<T>);
descriptor: (Ljava/lang/Object;Lio/netty/util/Recycler$Handle;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getstatic io.netty.util.Recycler.NOOP_HANDLE:Lio/netty/util/Recycler$Handle;
if_acmpne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
checkcast io.netty.util.Recycler$DefaultHandle
astore 3
start local 3 3: aload 3
getfield io.netty.util.Recycler$DefaultHandle.stack:Lio/netty/util/Recycler$Stack;
getfield io.netty.util.Recycler$Stack.parent:Lio/netty/util/Recycler;
aload 0
if_acmpeq 5
4: iconst_0
ireturn
5: StackMap locals: io.netty.util.Recycler$DefaultHandle
StackMap stack:
aload 3
aload 1
invokevirtual io.netty.util.Recycler$DefaultHandle.recycle:(Ljava/lang/Object;)V
6: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/netty/util/Recycler<TT;>;
0 7 1 o TT;
0 7 2 handle Lio/netty/util/Recycler$Handle<TT;>;
3 7 3 h Lio/netty/util/Recycler$DefaultHandle<TT;>;
Signature: (TT;Lio/netty/util/Recycler$Handle<TT;>;)Z
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
o
handle
final int threadLocalCapacity();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.util.Recycler.threadLocal:Lio/netty/util/concurrent/FastThreadLocal;
invokevirtual io.netty.util.concurrent.FastThreadLocal.get:()Ljava/lang/Object;
checkcast io.netty.util.Recycler$Stack
getfield io.netty.util.Recycler$Stack.elements:[Lio/netty/util/Recycler$DefaultHandle;
arraylength
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/util/Recycler<TT;>;
final int threadLocalSize();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.util.Recycler.threadLocal:Lio/netty/util/concurrent/FastThreadLocal;
invokevirtual io.netty.util.concurrent.FastThreadLocal.get:()Ljava/lang/Object;
checkcast io.netty.util.Recycler$Stack
getfield io.netty.util.Recycler$Stack.size:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/netty/util/Recycler<TT;>;
protected abstract T newObject(io.netty.util.Recycler$Handle<T>);
descriptor: (Lio/netty/util/Recycler$Handle;)Ljava/lang/Object;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (Lio/netty/util/Recycler$Handle<TT;>;)TT;
MethodParameters:
Name Flags
handle
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Recycler.java"
NestMembers:
io.netty.util.Recycler$1 io.netty.util.Recycler$2 io.netty.util.Recycler$3 io.netty.util.Recycler$DefaultHandle io.netty.util.Recycler$Handle io.netty.util.Recycler$Stack io.netty.util.Recycler$WeakOrderQueue io.netty.util.Recycler$WeakOrderQueue$Head io.netty.util.Recycler$WeakOrderQueue$Link
InnerClasses:
io.netty.util.Recycler$1
io.netty.util.Recycler$2
io.netty.util.Recycler$3
final DefaultHandle = io.netty.util.Recycler$DefaultHandle of io.netty.util.Recycler
public abstract Handle = io.netty.util.Recycler$Handle of io.netty.util.Recycler
final Stack = io.netty.util.Recycler$Stack of io.netty.util.Recycler
private final WeakOrderQueue = io.netty.util.Recycler$WeakOrderQueue of io.netty.util.Recycler