
com.groupbyinc.flux.monitor.jvm.DeadlockAnalyzer.class Maven / Gradle / Ivy
???? 4 ? 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 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 , findMonitorDeadlockedThreads ()[J . / - 0 [J 2 4 createThreadInfoMap ([J)Ljava/util/Map; 6 7
8 calculateCycles (Ljava/util/Map;)Ljava/util/Set; : ;
< calculateCycleDeadlockChains /(Ljava/util/Map;Ljava/util/Set;)Ljava/util/Set; > ?
@
java/util/Set B addAll (Ljava/util/Collection;)Z D E C F createDeadlockDescriptions M(Ljava/util/Set;)[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; H I
J deadlockedThreads
threadInfoMap BLjava/util/Map; Ljava/util/Map; cycles MLjava/util/Set;>; Ljava/util/Set; chains size ()I T U C V iterator ()Ljava/util/Iterator; X Y C Z java/util/Iterator ] hasNext ()Z _ ` ^ a next ()Ljava/lang/Object; c d ^ e java/util/LinkedHashSet g
h V java/lang/management/ThreadInfo j toArray (([Ljava/lang/Object;)[Ljava/lang/Object; l m
h n "[Ljava/lang/management/ThreadInfo; p %([Ljava/lang/management/ThreadInfo;)V r
s asArray d ;Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; cycle ; Ljava/util/LinkedHashSet; result count I java/util/HashSet ~
entrySet ()Ljava/util/Set; ? ? ?
h getValue ? d
? contains (Ljava/lang/Object;)Z ? ?
h ? add ? ?
h ? getLockOwnerId ()J ? ?
k ? java/lang/Long ? valueOf (J)Ljava/lang/Long; ? ?
? ? get &(Ljava/lang/Object;)Ljava/lang/Object; ? ? ? C ? C ? t !Ljava/lang/management/ThreadInfo; entry HLjava/util/Map$Entry; Ljava/util/Map$Entry; getAllThreadIds ? / - ?
getThreadInfo &([J)[Ljava/lang/management/ThreadInfo; ? ? - ? keySet ? ? ? getThreadState ()Ljava/lang/Thread$State; ? ?
k ? BLOCKED Ljava/lang/Thread$State; ? ? ? getThreadId ? ?
k ? chain node state
threadInfo
allThreads
deadlockChain knownDeadlockedThreads !Ljava/util/Set; java/util/HashMap ?
? put 8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ? ? ? java/util/Collections ? unmodifiableMap (Ljava/util/Map;)Ljava/util/Map; ? ?
? ? threadIds threadInfos
Code LineNumberTable LocalVariableTable LocalVariableTypeTable
StackMapTable Signature ?(Ljava/util/Set;>;)[Lcom/groupbyinc/flux/monitor/jvm/DeadlockAnalyzer$Deadlock; ?(Ljava/util/Map;)Ljava/util/Set;>; ?(Ljava/util/Map;Ljava/util/Set;>;)Ljava/util/Set;>; F([J)Ljava/util/Map;
SourceFile InnerClasses !
? ? ? ? + ? > *? *? &? (? ? ) ? . &