मुझे टॉमकैट 6 (जावा 1.6.0_22, लिनक्स) पर चल रहे स्प्रिंग एमवीसी वेब एप्लिकेशन के लिए जेस्टैक से मिले थ्रेड डंप को समझने में कठिनाइयां हो रही हैं। ।जावा थ्रेड डंप: "लॉक करने का इंतजार" के बिना ब्लॉक्ड थ्रेड ...
मैं धागे को अवरुद्ध करता हूं (जो अन्य थ्रेडों को प्रतीक्षा करने का कारण बनता है) जो खुद को अवरुद्ध कर रहे हैं, हालांकि थ्रेड डंप मुझे नहीं बताता है कि वे किस मॉनिटर के लिए प्रतीक्षा कर रहे हैं।
उदाहरण:
"TP-Processor75" daemon prio=10 tid=0x00007f3e88448800 nid=0x56f5 waiting for monitor entry [0x00000000472bc000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Class.initAnnotationsIfNecessary(Class.java:3067)
- locked <0x00007f3e9a0b3830> (a java.lang.Class for org.catapultframework.resource.ResourceObject)
at java.lang.Class.getAnnotation(Class.java:3029)
...
अर्थात मुझे स्टैक ट्रेस में "लॉक करने की प्रतीक्षा ..." लाइन गुम है। स्पष्ट रूप से थ्रेड क्लास ऑब्जेक्ट को लॉक करता है, लेकिन मुझे नहीं लगता कि थ्रेड स्वयं अवरुद्ध क्यों है।
थ्रेड-डंप में डेडलॉक्स के लिए कोई संकेत नहीं है।
लॉकिंग मॉनीटर की पहचान करने के लिए मैं क्या कर सकता हूं?
धन्यवाद, ओलिवर
क्या आप संदर्भ 0x00000000472bc000 के लिए कोई अन्य प्रविष्टियां देखते हैं? –
नहीं, एक ही डंप में नहीं। 0x00000000472bc000 थ्रेड "टीपी-प्रोसेसर 75" की पहचान करता है, तो क्या आप डंप के भीतर एक ही थ्रेड के एकाधिक उल्लेखों की अपेक्षा करते हैं? – Oliver
अच्छी तरह से 0x00000000472bc000 मॉनिटर को इंगित करता है कि थ्रेड प्रवेश करने का इंतजार कर रहा है। यह एक और थ्रेड मॉनिटर संदर्भ 0x00000000472bc000 में प्रवेश कर चुका है और टीपी-प्रोसेसर 75 वर्तमान में 0x00000000472bc000 जारी करने के लिए होल्डिंग थ्रेड का इंतजार कर रहा है –