Mam opartą na Java EE aplikację działającą na tomcat i widzę, że nagle aplikacja zawiesza się po uruchomieniu przez kilka godzin.Analizowanie zrzutów wątku procesu java
Zebrałem zrzutu wątku z aplikacji tuż przed wisi i umieścić go w TDA do analizy:
TDA (gwint Dump Analyzer) daje następujący komunikat o powyższym monitora:
A lot of threads are waiting for this monitor to become available again.
This might indicate a congestion. You also should analyze other locks
blocked by threads waiting for this monitor as there might be much more
threads waiting for it.
A oto StackTrace gwintu podkreślono powyżej:
"MY_THREAD" prio=10 tid=0x00007f97f1918800 nid=0x776a
waiting for monitor entry [0x00007f9819560000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.Hashtable.get(Hashtable.java:356)
- locked <0x0000000680038b68> (a java.util.Properties)
at java.util.Properties.getProperty(Properties.java:951)
at java.lang.System.getProperty(System.java:709)
at com.MyClass.myMethod(MyClass.java:344)
Chcę wiedzieć, co oznacza stan "waiting for monitor entry"
? A także docenią wszelkie wskazówki, które pomogą mi rozwiązać ten problem.
I będzie wyszukiwał w pamięci podręcznej właściwości systemu, zamiast wywoływać je wielokrotnie w ten sposób. Nie powinieneś wywoływać System.getProperty() więcej niż kilkanaście razy w ciągu całego życia aplikacji. tj. powinieneś go zakodować, aby nie był to szyjka butelki. –
hmm .. dobry punkt Peter! – peakit