
com.groupbyinc.flux.monitor.jvm.DeadlockAnalyzer.class Maven / Gradle / Ivy
???? 3 ? 0com/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer java/lang/Object DeadlockAnalyzer.java 9com/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock Deadlock java/util/Map$Entry
java/util/Map Entry java/lang/Thread$State java/lang/Thread State Ecom/groupbyinc/flux/common/google/common/collect/ImmutableMap$Builder =com/groupbyinc/flux/common/google/common/collect/ImmutableMap Builder NULL_RESULT <[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock;
threadBean #Ljava/lang/management/ThreadMXBean; INSTANCE 2Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer; deadlockAnalyzer 4()Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer; ()V " #
$ &java/lang/management/ManagementFactory & getThreadMXBean %()Ljava/lang/management/ThreadMXBean; ( )
' * , this
findDeadlocks >()[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; !java/lang/management/ThreadMXBean 1 findMonitorDeadlockedThreads ()[J 3 4 2 5 [J 7 9 createThreadInfoMap C([J)Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap; ; <
= calculateCycles P(Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap;)Ljava/util/Set; ? @
A calculateCycleDeadlockChains _(Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap;Ljava/util/Set;)Ljava/util/Set; C D
E
java/util/Set G addAll (Ljava/util/Collection;)Z I J H K createDeadlockDescriptions M(Ljava/util/Set;)[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; M N
O deadlockedThreads
threadInfoMap rLcom/groupbyinc/flux/common/google/common/collect/ImmutableMap; ?Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap; cycles MLjava/util/Set;>; Ljava/util/Set; chains size ()I Y Z H [ iterator ()Ljava/util/Iterator; ] ^ H _ java/util/Iterator b hasNext ()Z d e c f next ()Ljava/lang/Object; h i c j java/util/LinkedHashSet l
m [ java/lang/management/ThreadInfo o toArray (([Ljava/lang/Object;)[Ljava/lang/Object; q r
m s "[Ljava/lang/management/ThreadInfo; u %([Ljava/lang/management/ThreadInfo;)V " w
x asArray d ;Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; cycle ; Ljava/util/LinkedHashSet; result count I java/util/HashSet ?
? $ entrySet A()Lcom/groupbyinc/flux/common/google/common/collect/ImmutableSet; ? ?
? =com/groupbyinc/flux/common/google/common/collect/ImmutableSet ? I()Lcom/groupbyinc/flux/common/google/common/collect/UnmodifiableIterator; ] ?
? ?
m $ getValue ? i
? contains (Ljava/lang/Object;)Z ? ?
m ? add ? ?
m ? getLockOwnerId ()J ? ?
p ? java/lang/Long ? valueOf (J)Ljava/lang/Long; ? ?
? ? get &(Ljava/lang/Object;)Ljava/lang/Object; ? ?
? H ? H ? t !Ljava/lang/management/ThreadInfo; entry HLjava/util/Map$Entry; Ljava/util/Map$Entry; getAllThreadIds ? 4 2 ?
getThreadInfo &([J)[Ljava/lang/management/ThreadInfo; ? ? 2 ? keySet ? ?
? getThreadState ()Ljava/lang/Thread$State; ? ?
p ? BLOCKED Ljava/lang/Thread$State; ? ? ? getThreadId ? ?
p ? node chain state
threadInfo
allThreads
deadlockChain knownDeadlockedThreads !Ljava/util/Set; builder I()Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap$Builder; ? ?
? put m(Ljava/lang/Object;Ljava/lang/Object;)Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap$Builder; ? ?
? build A()Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap; ? ?
? threadIds threadInfos zLcom/groupbyinc/flux/common/google/common/collect/ImmutableMap$Builder; GLcom/groupbyinc/flux/common/google/common/collect/ImmutableMap$Builder;
$ Code LineNumberTable LocalVariableTable LocalVariableTypeTable
StackMapTable Signature ?(Ljava/util/Set;>;)[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; ?(Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap;)Ljava/util/Set;>;(Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap;Ljava/util/Set;>;)Ljava/util/Set;>; v([J)Lcom/groupbyinc/flux/common/google/common/collect/ImmutableMap;
SourceFile InnerClasses !
? ? !? ? ) " # ? > *? %*? +? -? ? . ? , $ . / 0 ? ? :*? -? 6 L+? +?? ? :?*+? >M*,? BN*,-? F:-? L W*-? P? ? 4 : .
0 Q 7 R T # U W + X W ? R S # U V + X V ? " 1
2 3 5 6 # 7 + 8 4 9 ? ? 8 M N ? T+? \ ? M>+? ` :? g ? 7? k ? m:? n? p? t? v:? Y? y:,?S???,? ? H <