2010-11-15 17 views
9

के लिए जेकनसोल का उपयोग करके मैं अपने जे 2 ईई सर्वर में कुछ मेमोरी मुद्दों का निदान करने की कोशिश कर रहा हूं। मैंने अपने लाइव सर्वर पर jconsole सेट किया है और मैं इसके माध्यम से टॉमकैट सर्वर की स्थिति की निगरानी करने की कोशिश कर रहा हूं। मेरे पास jconsole में थ्रेड टैब के बारे में एक त्वरित सवाल है। मैं धागे सूची में फाइनलाइज़र नामक थ्रेड देख सकता हूं। इस धागे में 'कुल अवरुद्ध' संख्या बढ़ती जा रही है। उदाहरण के लिए, अब यह 4,049 है, एक घंटे पहले यह 3,867 था।मेमोरी लीक

Name: Finalizer
State: WAITING on [email protected]
Total blocked: 4,049 Total waited: 1,579

इस सूत्र क्या मतलब है? क्या यह किसी भी तरह से जीसी से संबंधित है? मैंने एक हीप डंप डाउनलोड किया है जहां यह दिखाता है कि अंतिम रूप देने के लिए लंबित वस्तुओं की संख्या शून्य है।

इस समय मेरे सर्वर का अधिकतम ढेर आकार 200 एमबी है, ढेर का आकार 100 और 150 एमबी के बीच रहता है और जब मैं 'प्रदर्शन जीसी' पर क्लिक करता हूं, तो मैं कुछ ढेर स्थान मुक्त हो सकता हूं। हालांकि यह विंडोज़ टास्क मैनेजर में इस टोमकैट प्रक्रिया द्वारा ली गई स्मृति की मात्रा को नहीं बदलेगा, जो अभी 700 एमबी से अधिक उपभोग कर रहा है।

इस बारे में कोई सुझाव कि मुझे इसके बारे में कैसे जाना चाहिए, इसकी बहुत सराहना की जाएगी। अगर आपको मेरे सर्वर सेटअप पर और जानकारी चाहिए तो कृपया मुझसे सवाल पूछें।

अग्रिम धन्यवाद।

उत्तर

10

मुझे लगता है कि मुझे अपने प्रश्न का उत्तर मिला है। 'कुल अवरुद्ध' और 'कुल प्रतीक्षा' बस धागे की प्रतीक्षा या अवरुद्ध होने की संख्या के लिए गिना जाता है। JConsole इस जानकारी को ThreadInfo से ले रहा है।

अवरुद्ध गणना उस समय की कुल संख्या है जब थ्रेड को मॉनीटर में प्रवेश करने या पुन: दर्ज करने के लिए अवरुद्ध किया जाता है। अर्थात। java.lang में थ्रेड की संख्या कितनी बार है। थ्रेड.स्टेट। ब्लॉक्ड स्टेट।

प्रतीक्षा की गई गिनती अधिसूचना के लिए प्रतीक्षा की जाने वाली कुल संख्या है। यानी java.lang.hread.State.WAITING या java.lang.Thread.State.TIMED_WAITING स्थिति में एक थ्रेड रहा है की संख्या।

+0

वैसे, मेरे परीक्षण में, समय सेकंड की इकाई में है। –

0

विंडोज़ टास्क मैनेजर वर्चुअल मेमोरी आकार दिखाता है और अधिकांश समय सटीक नहीं है। मैंने इसे बहुत समय देखा है, जेकोनसोल क्या दिखाता है क्योंकि पदचिह्न सही स्मृति पदचिह्न है।

JConsole के बारे में अधिक जानकारी के लिए here देखें। http://download.oracle.com/javase/tutorial/essential/concurrency/deadlock.html

आप किसी भी सिंक्रनाइज़ तरीकों कि असीम की प्रतीक्षा में हो है:

+0

धन्यवाद से पहले (जब तक कुछ भी नहीं फिर से दावा नहीं किया जा सकता है या कई जीसी) एक पूर्ण जीसी करना सुनिश्चित करें। मैंने पहले भी उस पृष्ठ को देखा है।इसमें फाइनलज़र थ्रेड का एक स्क्रीन शॉट है जिसके बारे में मैं बात कर रहा हूं (चित्रा 3-8)। हालांकि, यह धागे, या कुल अवरुद्ध, कुल प्रतीक्षा गुणों के बारे में किसी भी विवरण में नहीं जाता है। –

0

मेरे लिए एक डेडलॉक तरह लग रहा है?

+0

ठीक है, मैंने jconsole में डिटेक्ट डेडलॉक सुविधा का उपयोग किया है लेकिन कुछ भी नहीं मिला। यह कहता है कि कोई डेडलॉक नहीं मिला। –

1

नाम: finalizer राज्य: पर [email protected] कुल प्रतीक्षा अवरुद्ध: 4,049 कुल इंतजार कर रहे थे: 1.579

ReferenceQueue के लिए एक संदर्भ को बनाए रखने है सभी अप्रयुक्त वस्तुओं (अंतिम रूप देने की प्रतीक्षा), दूसरे शब्दों में 4049 ऑब्जेक्ट्स कचरा संग्रह की प्रतीक्षा कर रहे हैं।

जब मेमोरी लीक लिए शिकार, अपने लिंक के लिए डंप कर

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