2008-09-15 16 views
8

जेवीएम थ्रेड डंप का कारण क्या हो सकता है जो थ्रेड को मॉनीटर पर लॉक करने का इंतजार कर रहा है, लेकिन मॉनीटर के पास इसी लॉकिंग थ्रेड नहीं हैं?जेवीएम थ्रेड डंप थ्रेड्स को लॉक किए बिना मॉनीटर युक्त

जावा 1.5_14 Windows 2003

+0

क्या आपके पास एक डंप है जिसे हम देख सकते हैं? – svrist

+0

मैंने – Kevin

उत्तर

0

सिर्फ एक जंगली अनुमान है कि है, लेकिन यह हो सकता है पर, कि एक धागा ताले अपने आप में एक ताला दो बार प्राप्त करने के लिए कोशिश कर रहा द्वारा? शायद अगर आप कुछ कोड पोस्ट कर सकते हैं तो इससे मदद मिलेगी।

0

हाँ आम तौर पर लॉक होने वाले प्रत्येक मॉनिटर के पास मालिक थ्रेड होना चाहिए। हो सकता है कि आपका स्टैक डंप पूरा न हो (बहुत लंबा) या शायद डंपिंग संगत नहीं थी। मैं कल्पना कर सकता हूं कि यह दुनिया को रोक नहीं रहा है, इसलिए लॉक मॉनिटर डंप हो गया है, लेकिन लॉक का मालिक जो धागा है उसे छोड़ने से पहले इसे रिलीज़ करता है (यह सिर्फ एक अनुमान है)।

क्या आप कुछ आसान खोज के लिए टेक्स्ट फ़ाइल के रूप में डंप अपलोड कर सकते हैं, और हमें बताएं कि आप किस मॉनीटर को देख रहे हैं।

1

क्या आपके कोड किसी भी बदलाव से किसी भी जेएनआई का उपयोग करते हैं? (यानी आप जावा से लॉन्च कोई मूल कोड चला रहे हैं?)।

हमने एक समान व्यवहार देखा है, लेकिन जेडीके 1.6.0_05। ऐप डेडलॉक पर प्रतीत होता है, लेकिन जेस्टैक धागे को लॉक के लिए इंतजार कर रहा है कि कोई अन्य थ्रेड नहीं हो रहा है। हमारे पास कुछ जेएनआई कोड है, इसलिए यह संभव है कि हम कुछ भ्रष्ट कर रहे हों।

हमें इसके लिए कोई समाधान नहीं मिला है और यह मुद्दा केवल 1 मशीन पर पुन: उत्पन्न होता है।

+0

से नीचे संलग्न किया है, नहीं, ऐसा नहीं है। समय के लिए धन्यवाद। – Kevin

1

क्या प्रतीक्षा करने वाले थ्रेड हमेशा के लिए प्रतीक्षा करते हैं, या फिर वे आगे बढ़ते हैं?

यदि बाद वाला, यह हो सकता है कि लॉक कचरा कलेक्टर द्वारा आयोजित किया जाता है।

आप जीसी कमांड लाइन पर बताए जाने के लिए अपने जावा कमांड लाइन पर -verbose:gc with -XX:+PrintGCDetails तर्क जोड़ सकते हैं। यदि जीसी गतिविधि आपके मंदी के साथ मेल खाती है तो यह संकेत दे सकती है कि यह समस्या है।

यहां कुछ information on garbage collection है।

+0

वे अंततः कई मिनटों के बाद आगे बढ़ते हैं। अगर मैं कचरा कलेक्टर द्वारा आयोजित किया जाता है तो मैं कैसे पुष्टि कर सकता हूं। क्या मुझे थ्रेड डंप में कचरा कलेक्टर थ्रेड देखने की उम्मीद करनी चाहिए? – Kevin

0

मुझे आज भी इसी तरह की समस्या थी, और इसमें स्थिर संसाधनों का भी उपयोग शामिल था।

लघु संस्करण यह है कि एक वर्ग ने स्थिर ब्लॉक में जीयूआई परिवर्तन किए हैं, और एडब्ल्यूटी-इवेंट क्यूई थ्रेड के बाहर, जिसे एडब्ल्यूटी ट्री लॉक द्वारा अवरुद्ध किया गया था, तब इवेंटक्यूयू ने अवरुद्ध वर्ग का संदर्भ दिया, जिसने इसे मजबूर कर दिया उस वर्ग के लिए कक्षा लोडर की निगरानी पर प्रतीक्षा करने के लिए।

यहां महत्वपूर्ण अवलोकन यह है कि क्लास लोडर के लिए लॉक थ्रेड डंप में लॉक के रूप में दिखाई नहीं दिया था।

पूरा उत्तर on this thread पाया जा सकता है।

0

क्या आपने जावा 1.6 में अपग्रेड करने का प्रयास किया है? यदि आप केवल 1.5 पर हैं तो एक बग आपकी समस्या हो सकती है।

संबंधित मुद्दे