final class io.netty.util.ResourceLeakDetector$DefaultResourceLeak<T> extends java.lang.ref.WeakReference<java.lang.Object> implements io.netty.util.ResourceLeakTracker<T>, io.netty.util.ResourceLeak
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.netty.util.ResourceLeakDetector$DefaultResourceLeak
super_class: java.lang.ref.WeakReference
{
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<io.netty.util.ResourceLeakDetector$DefaultResourceLeak<?>, io.netty.util.ResourceLeakDetector$Record> headUpdater;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<*>;Lio/netty/util/ResourceLeakDetector$Record;>;
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.netty.util.ResourceLeakDetector$DefaultResourceLeak<?>> droppedRecordsUpdater;
descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<*>;>;
private volatile io.netty.util.ResourceLeakDetector$Record head;
descriptor: Lio/netty/util/ResourceLeakDetector$Record;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int droppedRecords;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private final java.util.concurrent.ConcurrentMap<io.netty.util.ResourceLeakDetector$DefaultResourceLeak<?>, io.netty.util.ResourceLeakDetector$LeakEntry> allLeaks;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<*>;Lio/netty/util/ResourceLeakDetector$LeakEntry;>;
private final int trackedHash;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Lio/netty/util/ResourceLeakDetector;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.$assertionsDisabled:Z
3: ldc Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak;
ldc Lio/netty/util/ResourceLeakDetector$Record;
ldc "head"
invokestatic java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
4: putstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
5: ldc Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak;
ldc "droppedRecords"
invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
6: putstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.droppedRecordsUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
7: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(, java.lang.ref.ReferenceQueue<java.lang.Object>, java.util.concurrent.ConcurrentMap<io.netty.util.ResourceLeakDetector$DefaultResourceLeak<?>, io.netty.util.ResourceLeakDetector$LeakEntry>);
descriptor: (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
1: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.$assertionsDisabled:Z
ifne 2
aload 1
ifnonnull 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals: io.netty.util.ResourceLeakDetector$DefaultResourceLeak java.lang.Object java.lang.ref.ReferenceQueue java.util.concurrent.ConcurrentMap
StackMap stack:
aload 0
aload 1
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
putfield io.netty.util.ResourceLeakDetector$DefaultResourceLeak.trackedHash:I
3: aload 3
aload 0
getstatic io.netty.util.ResourceLeakDetector$LeakEntry.INSTANCE:Lio/netty/util/ResourceLeakDetector$LeakEntry;
invokeinterface java.util.concurrent.ConcurrentMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
new io.netty.util.ResourceLeakDetector$Record
dup
getstatic io.netty.util.ResourceLeakDetector$Record.BOTTOM:Lio/netty/util/ResourceLeakDetector$Record;
invokespecial io.netty.util.ResourceLeakDetector$Record.<init>:(Lio/netty/util/ResourceLeakDetector$Record;)V
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.set:(Ljava/lang/Object;Ljava/lang/Object;)V
5: aload 0
aload 3
putfield io.netty.util.ResourceLeakDetector$DefaultResourceLeak.allLeaks:Ljava/util/concurrent/ConcurrentMap;
6: return
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/ResourceLeakDetector$DefaultResourceLeak<TT;>;
0 7 1 referent Ljava/lang/Object;
0 7 2 refQueue Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;
0 7 3 allLeaks Ljava/util/concurrent/ConcurrentMap<Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<*>;Lio/netty/util/ResourceLeakDetector$LeakEntry;>;
Signature: (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;Ljava/util/concurrent/ConcurrentMap<Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<*>;Lio/netty/util/ResourceLeakDetector$LeakEntry;>;)V
MethodParameters:
Name Flags
referent
refQueue
allLeaks
public void record();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokevirtual io.netty.util.ResourceLeakDetector$DefaultResourceLeak.record0:(Ljava/lang/Object;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
public void record(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual io.netty.util.ResourceLeakDetector$DefaultResourceLeak.record0:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
0 2 1 hint Ljava/lang/Object;
MethodParameters:
Name Flags
hint
private void record0(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: getstatic io.netty.util.ResourceLeakDetector.TARGET_RECORDS:I
ifle 21
1: StackMap locals:
StackMap stack:
getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.util.ResourceLeakDetector$Record
dup
astore 2
start local 2 2: dup
astore 3
start local 3 3: ifnonnull 5
4: return
5: StackMap locals: io.netty.util.ResourceLeakDetector$Record io.netty.util.ResourceLeakDetector$Record
StackMap stack:
aload 2
getfield io.netty.util.ResourceLeakDetector$Record.pos:I
iconst_1
iadd
istore 6
start local 6 6: iload 6
getstatic io.netty.util.ResourceLeakDetector.TARGET_RECORDS:I
if_icmplt 14
7: iload 6
getstatic io.netty.util.ResourceLeakDetector.TARGET_RECORDS:I
isub
bipush 30
invokestatic java.lang.Math.min:(II)I
istore 7
start local 7 8: invokestatic io.netty.util.internal.PlatformDependent.threadLocalRandom:()Ljava/util/Random;
iconst_1
iload 7
ishl
invokevirtual java.util.Random.nextInt:(I)I
ifeq 9
iconst_1
goto 10
StackMap locals: io.netty.util.ResourceLeakDetector$DefaultResourceLeak java.lang.Object io.netty.util.ResourceLeakDetector$Record io.netty.util.ResourceLeakDetector$Record top top int int
StackMap stack:
9: iconst_0
StackMap locals:
StackMap stack: int
10: dup
istore 5
start local 5 11: ifeq 15
12: aload 2
getfield io.netty.util.ResourceLeakDetector$Record.next:Lio/netty/util/ResourceLeakDetector$Record;
astore 3
end local 7 13: goto 15
end local 5 14: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 15: StackMap locals: io.netty.util.ResourceLeakDetector$DefaultResourceLeak java.lang.Object io.netty.util.ResourceLeakDetector$Record io.netty.util.ResourceLeakDetector$Record top int int
StackMap stack:
aload 1
ifnull 16
new io.netty.util.ResourceLeakDetector$Record
dup
aload 3
aload 1
invokespecial io.netty.util.ResourceLeakDetector$Record.<init>:(Lio/netty/util/ResourceLeakDetector$Record;Ljava/lang/Object;)V
goto 17
StackMap locals:
StackMap stack:
16: new io.netty.util.ResourceLeakDetector$Record
dup
aload 3
invokespecial io.netty.util.ResourceLeakDetector$Record.<init>:(Lio/netty/util/ResourceLeakDetector$Record;)V
StackMap locals:
StackMap stack: io.netty.util.ResourceLeakDetector$Record
17: astore 4
end local 6 start local 4 18: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aload 2
aload 4
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 1
19: iload 5
ifeq 21
20: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.droppedRecordsUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.incrementAndGet:(Ljava/lang/Object;)I
pop
end local 5 end local 4 end local 3 end local 2 21: StackMap locals: io.netty.util.ResourceLeakDetector$DefaultResourceLeak java.lang.Object
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
0 22 1 hint Ljava/lang/Object;
2 21 2 oldHead Lio/netty/util/ResourceLeakDetector$Record;
3 21 3 prevHead Lio/netty/util/ResourceLeakDetector$Record;
18 21 4 newHead Lio/netty/util/ResourceLeakDetector$Record;
11 14 5 dropped Z
15 21 5 dropped Z
6 18 6 numElements I
8 13 7 backOffFactor I
MethodParameters:
Name Flags
hint
boolean dispose();
descriptor: ()Z
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual io.netty.util.ResourceLeakDetector$DefaultResourceLeak.clear:()V
1: aload 0
getfield io.netty.util.ResourceLeakDetector$DefaultResourceLeak.allLeaks:Ljava/util/concurrent/ConcurrentMap;
aload 0
getstatic io.netty.util.ResourceLeakDetector$LeakEntry.INSTANCE:Lio/netty/util/ResourceLeakDetector$LeakEntry;
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
public boolean close();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield io.netty.util.ResourceLeakDetector$DefaultResourceLeak.allLeaks:Ljava/util/concurrent/ConcurrentMap;
aload 0
getstatic io.netty.util.ResourceLeakDetector$LeakEntry.INSTANCE:Lio/netty/util/ResourceLeakDetector$LeakEntry;
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 4
1: aload 0
invokevirtual io.netty.util.ResourceLeakDetector$DefaultResourceLeak.clear:()V
2: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.set:(Ljava/lang/Object;Ljava/lang/Object;)V
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
public boolean close();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.$assertionsDisabled:Z
ifne 1
aload 0
getfield io.netty.util.ResourceLeakDetector$DefaultResourceLeak.trackedHash:I
aload 1
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.netty.util.ResourceLeakDetector$DefaultResourceLeak.close:()Z
ifeq 2
aload 1
ifnull 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
0 3 1 trackedObject TT;
Signature: (TT;)Z
MethodParameters:
Name Flags
trackedObject
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=1
start local 0 0: getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.headUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
aload 0
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.getAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.netty.util.ResourceLeakDetector$Record
astore 1
start local 1 1: aload 1
ifnonnull 3
2: ldc ""
areturn
3: StackMap locals: io.netty.util.ResourceLeakDetector$Record
StackMap stack:
getstatic io.netty.util.ResourceLeakDetector$DefaultResourceLeak.droppedRecordsUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
aload 0
invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
istore 2
start local 2 4: iconst_0
istore 3
start local 3 5: aload 1
getfield io.netty.util.ResourceLeakDetector$Record.pos:I
iconst_1
iadd
istore 4
start local 4 6: new java.lang.StringBuilder
dup
iload 4
sipush 2048
imul
invokespecial java.lang.StringBuilder.<init>:(I)V
getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
astore 5
start local 5 7: aload 5
ldc "Recent access records: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
8: iconst_1
istore 6
start local 6 9: new java.util.HashSet
dup
iload 4
invokespecial java.util.HashSet.<init>:(I)V
astore 7
start local 7 10: goto 20
11: StackMap locals: io.netty.util.ResourceLeakDetector$DefaultResourceLeak io.netty.util.ResourceLeakDetector$Record int int int java.lang.StringBuilder int java.util.Set
StackMap stack:
aload 1
invokevirtual io.netty.util.ResourceLeakDetector$Record.toString:()Ljava/lang/String;
astore 8
start local 8 12: aload 7
aload 8
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
ifeq 18
13: aload 1
getfield io.netty.util.ResourceLeakDetector$Record.next:Lio/netty/util/ResourceLeakDetector$Record;
getstatic io.netty.util.ResourceLeakDetector$Record.BOTTOM:Lio/netty/util/ResourceLeakDetector$Record;
if_acmpne 16
14: aload 5
ldc "Created at:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
15: goto 19
16: StackMap locals: java.lang.String
StackMap stack:
aload 5
bipush 35
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
iload 6
iinc 6 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
17: goto 19
18: StackMap locals:
StackMap stack:
iinc 3 1
end local 8 19: StackMap locals:
StackMap stack:
aload 1
getfield io.netty.util.ResourceLeakDetector$Record.next:Lio/netty/util/ResourceLeakDetector$Record;
astore 1
StackMap locals:
StackMap stack:
20: aload 1
getstatic io.netty.util.ResourceLeakDetector$Record.BOTTOM:Lio/netty/util/ResourceLeakDetector$Record;
if_acmpne 11
21: iload 3
ifle 26
22: aload 5
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
23: iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
24: ldc " leak records were discarded because they were duplicates"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
26: StackMap locals:
StackMap stack:
iload 2
ifle 35
27: aload 5
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
29: ldc " leak records were discarded because the leak record count is targeted to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
30: getstatic io.netty.util.ResourceLeakDetector.TARGET_RECORDS:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
31: ldc ". Use system property "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
32: ldc "io.netty.leakDetection.targetRecords"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: ldc " to increase the limit."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
34: getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
35: StackMap locals:
StackMap stack:
aload 5
aload 5
invokevirtual java.lang.StringBuilder.length:()I
getstatic io.netty.util.internal.StringUtil.NEWLINE:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.StringBuilder.setLength:(I)V
36: aload 5
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lio/netty/util/ResourceLeakDetector$DefaultResourceLeak<TT;>;
1 37 1 oldHead Lio/netty/util/ResourceLeakDetector$Record;
4 37 2 dropped I
5 37 3 duped I
6 37 4 present I
7 37 5 buf Ljava/lang/StringBuilder;
9 37 6 i I
10 37 7 seen Ljava/util/Set<Ljava/lang/String;>;
12 19 8 s Ljava/lang/String;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;Lio/netty/util/ResourceLeakTracker<TT;>;Lio/netty/util/ResourceLeak;
SourceFile: "ResourceLeakDetector.java"
NestHost: io.netty.util.ResourceLeakDetector
InnerClasses:
private final DefaultResourceLeak = io.netty.util.ResourceLeakDetector$DefaultResourceLeak of io.netty.util.ResourceLeakDetector
private final LeakEntry = io.netty.util.ResourceLeakDetector$LeakEntry of io.netty.util.ResourceLeakDetector
private final Record = io.netty.util.ResourceLeakDetector$Record of io.netty.util.ResourceLeakDetector