class org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector
super_class: java.lang.Object
{
java.util.Set<org.apache.cassandra.utils.concurrent.RefCounted$Tidy> candidates;
descriptor: Ljava/util/Set;
flags: (0x0000)
Signature: Ljava/util/Set<Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;>;
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
0: .line 675
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 677
aload 0 /* this */
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.candidates:Ljava/util/Set;
2: .line 675
return
end local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/utils/concurrent/Ref$StrongLeakDetector;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=1
start local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
0: .line 681
new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
astore 1 /* candidates */
start local 1 // java.util.Set candidates
1: .line 682
getstatic org.apache.cassandra.utils.concurrent.Ref.globallyExtant:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.Ref$GlobalState
astore 2 /* state */
start local 2 // org.apache.cassandra.utils.concurrent.Ref$GlobalState state
3: .line 683
aload 1 /* candidates */
aload 2 /* state */
getfield org.apache.cassandra.utils.concurrent.Ref$GlobalState.tidy:Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 2 // org.apache.cassandra.utils.concurrent.Ref$GlobalState state
4: .line 682
StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: .line 684
aload 0 /* this */
aload 1 /* candidates */
invokevirtual org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.removeExpected:(Ljava/util/Set;)V
6: .line 685
aload 0 /* this */
getfield org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.candidates:Ljava/util/Set;
aload 1 /* candidates */
invokeinterface java.util.Set.retainAll:(Ljava/util/Collection;)Z
pop
7: .line 686
aload 0 /* this */
getfield org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.candidates:Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
ifne 14
8: .line 688
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2 /* names */
start local 2 // java.util.List names
9: .line 689
aload 0 /* this */
getfield org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.candidates:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 4
goto 12
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set java.util.List top java.util.Iterator
StackMap stack:
10: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.RefCounted$Tidy
astore 3 /* tidy */
start local 3 // org.apache.cassandra.utils.concurrent.RefCounted$Tidy tidy
11: .line 690
aload 2 /* names */
aload 3 /* tidy */
invokeinterface org.apache.cassandra.utils.concurrent.RefCounted$Tidy.name:()Ljava/lang/String;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 3 // org.apache.cassandra.utils.concurrent.RefCounted$Tidy tidy
12: .line 689
StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
13: .line 691
getstatic org.apache.cassandra.utils.concurrent.Ref.logger:Lorg/slf4j/Logger;
ldc "Strong reference leak candidates detected: {}"
aload 2 /* names */
invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
end local 2 // java.util.List names
14: .line 693
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set
StackMap stack:
aload 0 /* this */
aload 1 /* candidates */
putfield org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector.candidates:Ljava/util/Set;
15: .line 694
return
end local 1 // java.util.Set candidates
end local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/apache/cassandra/utils/concurrent/Ref$StrongLeakDetector;
1 16 1 candidates Ljava/util/Set<Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;>;
3 4 2 state Lorg/apache/cassandra/utils/concurrent/Ref$GlobalState;
9 14 2 names Ljava/util/List<Ljava/lang/String;>;
11 12 3 tidy Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;
private void removeExpected(java.util.Set<org.apache.cassandra.utils.concurrent.RefCounted$Tidy>);
descriptor: (Ljava/util/Set;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=10, args_size=2
start local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
start local 1 // java.util.Set candidates
0: .line 698
new org.apache.cassandra.utils.concurrent.Ref$IdentityCollection
dup
aload 1 /* candidates */
invokespecial org.apache.cassandra.utils.concurrent.Ref$IdentityCollection.<init>:(Ljava/util/Set;)V
astore 2 /* expected */
start local 2 // org.apache.cassandra.utils.concurrent.Ref$IdentityCollection expected
1: .line 699
invokestatic org.apache.cassandra.db.Keyspace.all:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 4
goto 11
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set org.apache.cassandra.utils.concurrent.Ref$IdentityCollection top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.db.Keyspace
astore 3 /* ks */
start local 3 // org.apache.cassandra.db.Keyspace ks
3: .line 701
aload 3 /* ks */
invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStores:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 10
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set org.apache.cassandra.utils.concurrent.Ref$IdentityCollection org.apache.cassandra.db.Keyspace java.util.Iterator top java.util.Iterator
StackMap stack:
4: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.db.ColumnFamilyStore
astore 5 /* cfs */
start local 5 // org.apache.cassandra.db.ColumnFamilyStore cfs
5: .line 703
aload 5 /* cfs */
invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getTracker:()Lorg/apache/cassandra/db/lifecycle/Tracker;
invokevirtual org.apache.cassandra.db.lifecycle.Tracker.getView:()Lorg/apache/cassandra/db/lifecycle/View;
astore 7 /* view */
start local 7 // org.apache.cassandra.db.lifecycle.View view
6: .line 704
aload 7 /* view */
invokevirtual org.apache.cassandra.db.lifecycle.View.allKnownSSTables:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 9
goto 9
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set org.apache.cassandra.utils.concurrent.Ref$IdentityCollection org.apache.cassandra.db.Keyspace java.util.Iterator org.apache.cassandra.db.ColumnFamilyStore java.util.Iterator org.apache.cassandra.db.lifecycle.View top java.util.Iterator
StackMap stack:
7: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.io.sstable.format.SSTableReader
astore 8 /* reader */
start local 8 // org.apache.cassandra.io.sstable.format.SSTableReader reader
8: .line 705
aload 8 /* reader */
aload 2 /* expected */
invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.addTo:(Lorg/apache/cassandra/utils/concurrent/Ref$IdentityCollection;)V
end local 8 // org.apache.cassandra.io.sstable.format.SSTableReader reader
9: .line 704
StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 7 // org.apache.cassandra.db.lifecycle.View view
end local 5 // org.apache.cassandra.db.ColumnFamilyStore cfs
10: .line 701
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set org.apache.cassandra.utils.concurrent.Ref$IdentityCollection org.apache.cassandra.db.Keyspace java.util.Iterator top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 3 // org.apache.cassandra.db.Keyspace ks
11: .line 699
StackMap locals: org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector java.util.Set org.apache.cassandra.utils.concurrent.Ref$IdentityCollection top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
12: .line 708
return
end local 2 // org.apache.cassandra.utils.concurrent.Ref$IdentityCollection expected
end local 1 // java.util.Set candidates
end local 0 // org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/apache/cassandra/utils/concurrent/Ref$StrongLeakDetector;
0 13 1 candidates Ljava/util/Set<Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;>;
1 13 2 expected Lorg/apache/cassandra/utils/concurrent/Ref$IdentityCollection;
3 11 3 ks Lorg/apache/cassandra/db/Keyspace;
5 10 5 cfs Lorg/apache/cassandra/db/ColumnFamilyStore;
6 10 7 view Lorg/apache/cassandra/db/lifecycle/View;
8 9 8 reader Lorg/apache/cassandra/io/sstable/format/SSTableReader;
Signature: (Ljava/util/Set<Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;>;)V
MethodParameters:
Name Flags
candidates
}
SourceFile: "Ref.java"
NestHost: org.apache.cassandra.utils.concurrent.Ref
InnerClasses:
final GlobalState = org.apache.cassandra.utils.concurrent.Ref$GlobalState of org.apache.cassandra.utils.concurrent.Ref
public IdentityCollection = org.apache.cassandra.utils.concurrent.Ref$IdentityCollection of org.apache.cassandra.utils.concurrent.Ref
private StrongLeakDetector = org.apache.cassandra.utils.concurrent.Ref$StrongLeakDetector of org.apache.cassandra.utils.concurrent.Ref
public abstract Tidy = org.apache.cassandra.utils.concurrent.RefCounted$Tidy of org.apache.cassandra.utils.concurrent.RefCounted