Stream dump analysis (AWT-EventQueue works, but waits on condition)

I have a swing application hanging after some (random) time. I took 5 snapshot threads every 10 seconds after it freezes, and they all contain these exact lines:

"AWT-EventQueue-0" prio=6 tid=0x0000000009949000 nid=0x7bec waiting on condition [0x000000000ebbc000]
  java.lang.Thread.State: RUNNABLE
      at java.math.BigInteger.valueOf(Unknown Source)
      at java.math.BigDecimal.inflate(Unknown Source)
      at java.math.BigDecimal.add(Unknown Source)
      at uk.co.xx.xxx.xxxx.XXX$4.get(XXX.java:171)

Note that no other thread in the thread dump is in XXX.java. The corresponding line of code (XXX.java:171) looks somewhat harmless:

a = a.add(b.multiply(c, MATH_CONTEXT), MATH_CONTEXT);

Where:

  • a, band care local variables BigDecimal.
  • MATH_CONTEXTis a variable public final staticaccessed only in XXX.java

My questions (the answer to any of them will be a big help)

  • (, , , RUNNABLE)?
  • - ?
  • ?
+3
2

(, , , RUNNABLE)?

. , . , , , .

- ?

, , , .

?

. , , , , .

.

, ( , ).

+1

, , .

Profiler , , , , .

, , , , , .

For profiling, I use VisualVM.

+1
source

All Articles