2012-02-06 23 views
18

का उपयोग कर मेमोरी लीक कैसे ढूंढें मुझे संदेह है कि हमारे सक्रिय एमक्यू कनेक्शन पुल में हमारे पास एक बड़ी मेमोरी लीक है - हम सामान्य मेमोरी रिसाव पैटर्न देख रहे हैं (ऐप लोड ठीक है, धीमा हो जाता है अगर यह लंबे समय तक चलता है या फिर से शुरू होता है समय की छोटी अवधि में बार-बार)। मैंने जावा मेमोरी लीक खोजने के लिए आधुनिक सर्वोत्तम प्रथाओं को देखा और बहुत सारे डेवलपर्स नए (एर) jvisualvm के बदले जाट/जेएमएपी जैसे पारंपरिक टूल्स को छोड़ रहे हैं।visualvm

इस टूल को लॉन्च करने पर (और अपने ट्यूटोरियल पर कुछ घंटे पढ़ने के लिए) मैं सीपीयू और मेमोरी दोनों के लिए प्रोफाइलर स्नैपशॉट लेने में सक्षम हूं।

मैं इस बिंदु पर फंस गया हूं - मैं रिसाव की पहचान करने के लिए इन स्नैपशॉट का विश्लेषण कैसे करूं? वहां स्नैपशॉट्स का उत्पादन करने के लिए jvisualvm का उपयोग करने के तरीके के बारे में बहुत सारे दस्तावेज हैं, लेकिन वास्तव में उन्हें समझने के तरीके के बारे में बहुत कम दस्तावेज़ीकरण।

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

+0

आप [FindBugs] चलाने का भी प्रयास है (http स्रोत पर // //indbugs.sourceforge.net)? मुझे लगता है कि कोड पहचानने में बहुत प्रभावी है जो मेमोरी लीक का कारण बन सकता है। – Jivings

+0

सुझाव के लिए धन्यवाद - लेकिन दो चीजें: (1) मुझे बार-बार कहा गया है कि FindBugs NullPointerExceptions के लिए अच्छा है लेकिन स्मृति रिसाव नहीं है, और, सबसे महत्वपूर्ण बात यह है कि, (2) मैं वास्तव में jvisualvm से परिचित होना चाहता हूं, इसलिए जब तक यह स्पष्ट रूप से * इस नौकरी के लिए सही उपकरण नहीं है, मुझे यह देखने में दिलचस्पी है कि इसका उपयोग नैदानिक ​​उपकरण के रूप में कैसे किया जाता है। हालांकि अच्छे सुझाव के लिए फिर से धन्यवाद! – IAmYourFaja

+2

एक छोटी सी चीज: टूल्स/प्लगइन्स/उपलब्ध प्लगइन्स - विजुअल जीसी स्थापित करें - प्लगइन आपकी ढेर मेमोरी और जीसी स्थिति का बेहतर ग्राफ दिखाता है। – coolcfan

उत्तर

23

visualvm का उपयोग कर स्मृति रिसाव का विश्लेषण करना इतना आसान नहीं है। इसमें 'नमूना' नामक टूल/प्लगइन है। इसका उपयोग स्मृति या सीपीयू नमूना करने के लिए किया जा सकता है। आप नियमित अंतराल पर स्नैपशॉट ले सकते हैं और संभावित लीक की तलाश कर सकते हैं। इसका उपयोग कैसे करें इसका उपयोग करने के बारे में कुछ विवरण यहां दिए गए हैं- quick search

एक प्रभावी ढेर प्राप्त करने के लिए अधिक प्रभावी तरीका होगा (कहें कि एप्लिकेशन धीमा हो गया है या OOM happens कब)। VisualVM मदद आप heapdump लेने के लिए (ढेर का उपयोग कर डंपमॉनिटर टैब पर)

इस फ़ाइल MAT द्वारा विश्लेषण किया जा सकता है - कुछ विवरण How do I analyze a .hprof file? पर यहाँ हैं और http://memoryanalyzer.blogspot.in/

+0

मैट VisualVM के बिना ही एक ढेर डंप भी ले सकता है – Chin

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

  • कोई संबंधित समस्या नहीं^_^