public final class io.netty.util.internal.ObjectCleaner
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.netty.util.internal.ObjectCleaner
super_class: java.lang.Object
{
private static final int REFERENCE_QUEUE_POLL_TIMEOUT_MS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final java.lang.String CLEANER_THREAD_NAME;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.util.Set<io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference> LIVE_SET;
descriptor: Ljava/util/Set;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Set<Lio/netty/util/internal/ObjectCleaner$AutomaticCleanerReference;>;
private static final java.lang.ref.ReferenceQueue<java.lang.Object> REFERENCE_QUEUE;
descriptor: Ljava/lang/ref/ReferenceQueue;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;
private static final java.util.concurrent.atomic.AtomicBoolean CLEANER_RUNNING;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.Runnable CLEANER_TASK;
descriptor: Ljava/lang/Runnable;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: sipush 500
ldc "io.netty.util.internal.ObjectCleaner.refQueuePollTimeout"
sipush 10000
invokestatic io.netty.util.internal.SystemPropertyUtil.getInt:(Ljava/lang/String;I)I
invokestatic java.lang.Math.max:(II)I
1: putstatic io.netty.util.internal.ObjectCleaner.REFERENCE_QUEUE_POLL_TIMEOUT_MS:I
2: new java.lang.StringBuilder
dup
ldc Lio/netty/util/internal/ObjectCleaner;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Thread"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putstatic io.netty.util.internal.ObjectCleaner.CLEANER_THREAD_NAME:Ljava/lang/String;
3: new io.netty.util.internal.ConcurrentSet
dup
invokespecial io.netty.util.internal.ConcurrentSet.<init>:()V
putstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
4: new java.lang.ref.ReferenceQueue
dup
invokespecial java.lang.ref.ReferenceQueue.<init>:()V
putstatic io.netty.util.internal.ObjectCleaner.REFERENCE_QUEUE:Ljava/lang/ref/ReferenceQueue;
5: new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
putstatic io.netty.util.internal.ObjectCleaner.CLEANER_RUNNING:Ljava/util/concurrent/atomic/AtomicBoolean;
6: new io.netty.util.internal.ObjectCleaner$1
dup
invokespecial io.netty.util.internal.ObjectCleaner$1.<init>:()V
putstatic io.netty.util.internal.ObjectCleaner.CLEANER_TASK:Ljava/lang/Runnable;
7: return
LocalVariableTable:
Start End Slot Name Signature
public static void register(java.lang.Object, java.lang.Runnable);
descriptor: (Ljava/lang/Object;Ljava/lang/Runnable;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: new io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference
dup
aload 0
1: aload 1
ldc "cleanupTask"
invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.Runnable
2: invokespecial io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference.<init>:(Ljava/lang/Object;Ljava/lang/Runnable;)V
astore 2
start local 2 3: getstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
aload 2
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
4: getstatic io.netty.util.internal.ObjectCleaner.CLEANER_RUNNING:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 11
5: new io.netty.util.concurrent.FastThreadLocalThread
dup
getstatic io.netty.util.internal.ObjectCleaner.CLEANER_TASK:Ljava/lang/Runnable;
invokespecial io.netty.util.concurrent.FastThreadLocalThread.<init>:(Ljava/lang/Runnable;)V
astore 3
start local 3 6: aload 3
iconst_1
invokevirtual java.lang.Thread.setPriority:(I)V
7: new io.netty.util.internal.ObjectCleaner$2
dup
aload 3
invokespecial io.netty.util.internal.ObjectCleaner$2.<init>:(Ljava/lang/Thread;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
8: aload 3
getstatic io.netty.util.internal.ObjectCleaner.CLEANER_THREAD_NAME:Ljava/lang/String;
invokevirtual java.lang.Thread.setName:(Ljava/lang/String;)V
9: aload 3
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
10: aload 3
invokevirtual java.lang.Thread.start:()V
end local 3 11: StackMap locals: io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 object Ljava/lang/Object;
0 12 1 cleanupTask Ljava/lang/Runnable;
3 12 2 reference Lio/netty/util/internal/ObjectCleaner$AutomaticCleanerReference;
6 11 3 cleanupThread Ljava/lang/Thread;
MethodParameters:
Name Flags
object
cleanupTask
public static int getLiveSetCount();
descriptor: ()I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
invokeinterface java.util.Set.size:()I
ireturn
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/netty/util/internal/ObjectCleaner;
}
SourceFile: "ObjectCleaner.java"
NestMembers:
io.netty.util.internal.ObjectCleaner$1 io.netty.util.internal.ObjectCleaner$2 io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference
InnerClasses:
io.netty.util.internal.ObjectCleaner$1
io.netty.util.internal.ObjectCleaner$2
private final AutomaticCleanerReference = io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference of io.netty.util.internal.ObjectCleaner