2013-01-15 24 views
5

पर सभी संदर्भ खोजें I अनुप्रयोग में एक permgen त्रुटि डीबग करने का प्रयास कर रहा हूं। मैं ऐप को प्रोफाइल करने के लिए VisualVM चला रहा हूं और मेमोरी स्नैपशॉट का हेपडम्प ले लिया है।विजुअलVM - कक्षा

विश्लेषण के लिए विजुअलVM में स्नैपशॉट लोड हो रहा है, मैं वर्तमान में कक्षाओं की सूची में कई बार दिखाई देने वाली कई कक्षाएं देख सकता हूं, सभी 0 उदाहरणों, 0 आकार के साथ सूचीबद्ध हैं - मैं केवल इन वर्गों में से एक की उम्मीद कर रहा हूं (शायद इसके क्लासलोडर से जुड़ा हुआ है) - क्या यह निर्धारित करने का कोई तरीका है कि इन वर्गों के संदर्भ में अभी भी कोई संदर्भ नहीं है? किसी अन्य टूल का उपयोग करने में खुशी है अगर मैं संदर्भ को पकड़ने के विश्लेषण के लिए डंप (.hprof) में बस लोड कर सकता हूं।

धन्यवाद!

+0

मैंने अतीत में आपकेकिट का उपयोग किया है। यह एक डंप लोड कर सकते हैं। आप एक मुफ्त eval लाइसेंस प्राप्त कर सकते हैं। –

उत्तर

3

मैं इस तरह की चीजों के लिए MAT का उपयोग करता हूं। बड़े ढेर पर भी महान काम करता है।

+0

धन्यवाद - मैट के लिए भी एक और सिफारिश पर ठोकर खाई - ग्रहण में स्थापित किया गया है ताकि यह देखने के लिए लॉग में लोड हो सके कि मुझे क्या मिल सकता है। – rhinds

16

ठीक है, "मैट का उपयोग करें" कह रहा है वास्तव में सवाल का जवाब नहीं देता है!

इसे VisualVM में करने के लिए, नमूने या प्रोफाइलर व्यू में "हेप डंप" लेबल वाला एक बटन (शीर्ष दाएं) है। इस पर क्लिक करें, जो ढेर विश्लेषक खोलता है। "कक्षाएं" टैब के अंतर्गत, सभी लोड किए गए वर्ग दिखाए जाते हैं। नीचे एक खोज बॉक्स है, जिस श्रेणी में आप रुचि रखते हैं उसे टाइप करें, फ़िल्टर किए गए दृश्य में प्रश्न में कक्षा को डबल क्लिक करें।

यह उदाहरण दृश्य खोलता है। बाएं फलक में एक उदाहरण राइट-क्लिक करें, और ऑब्जेक्ट का संदर्भ देने के लिए "निकटतम जीसी रूट दिखाएं" का चयन करें।

बार्नी