2009-06-04 12 views
34

यदि कोई प्रक्रिया क्रैश हो जाती है और कोर डंप छोड़ देती है या मैं gcore के साथ एक बना देता हूं तो मैं इसका विश्लेषण कैसे कर सकता हूं?जावा कोर डंप से जानकारी का विश्लेषण कैसे करें?

मैं jmap, jstack, jstat आदि का उपयोग करने और सभी चर के मान देखने के लिए सक्षम होना चाहता हूं।

इस तरह से मैं एक दुर्घटनाग्रस्त या जमे हुए JVM के कारण ढूंढ सकता हूं।

+0

जावा कोर डंप क्या है? क्या आप एप्लिकेशन के स्टैक ट्रेस का जिक्र कर रहे हैं या जेवीएम क्रैश के परिणामस्वरूप कोर डंप किया है? –

+1

क्या हम इसे विकी में बदल सकते हैं? यह एक प्रोग्रामिंग सवाल नहीं है। हालांकि, यह यूनिक्स प्लेटफ़ॉर्म पर किसी भी जावा प्रोग्रामर के लिए बहुत प्रासंगिक है। सॉफ्टवेयररेक पर जा रहा है .. एक और विकल्प है। किसी भी मामले में कृपया इसे हटाएं .. – Jayan

उत्तर

0

आईबीएम कई उपकरणों को प्रदान करता है जिनका उपयोग सूर्य जेवीएम पर भी किया जा सकता है। अल्फा कार्य पर कुछ परियोजनाओं पर एक नजर डालें, वे एक ढेर और धागा डंप विश्लेषक

कार्ल

0

मैं तुम्हें Netbeans Profiler यह वास्तविक समय विश्लेषण के लिए उपकरण की समृद्ध सेट है कोशिश करने के लिए सलाह देते हैं। आईबीएम से उपकरण ऑफ़लाइन विश्लेषण के लिए प्रयास करने योग्य हैं

5

क्या आप वाकई कोर डंप चाहते हैं जो आप चाहते हैं? जावा-स्तर की जानकारी के बजाए चल रहे जेवीएम के कच्चे गले होंगे। शायद एक जेवीएम हीप डंप आपको जितना चाहिए उतना अधिक है।

35

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

परिवर्तित करने के लिए फ़ाइल कमांडलाइन उपकरण jmap का उपयोग करें।

# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234 

जहां:

dump.hprof HPROF फ़ाइल आप

/usr/bin/जावा बनाना चाहते हैं का नाम है जावा द्विआधारी के संस्करण के लिए पथ है कि कोर डंप उत्पन्न

core.1234 आपकी नियमित कोर फ़ाइल है।

+0

क्या हम जेडीके 1.5/बिन/जेएमएपी का उपयोग कर सोलरिस पर hprof करने के लिए gcore का उपयोग कर जेडीके 1.4 कोर डंप फ़ाइल को परिवर्तित कर सकते हैं? मैंने उपर्युक्त आदेश का उपयोग करने की कोशिश की लेकिन यह त्रुटि देता है: कोर फ़ाइल को जोड़ने में त्रुटि: 'UseSharedSpaces' ध्वज नहीं मिला – techzen

+0

techzen: मुझे इस पर अनिश्चितता है कि मुझे डर है .. क्या आप निश्चित रूप से 1.4 जावा निष्पादन योग्य पर संदर्भित कर रहे हैं कमांडलाइन? यदि ऐसा है तो यह हो सकता है कि 1.4 कोर डंप संगत नहीं हैं। – chillitom

+0

क्या यह जेएमएम द्वारा जेनरेट की गई एमडीएमपी फ़ाइल को कनवर्ट करने के लिए jmap का उपयोग करना संभव है (http://docs.oracle.com/cd/E15289_01/doc.40/e15059/crash.htm)? – Greenhand

2

असल में, VisualVM अनुप्रयोग कोर डंप को संसाधित कर सकता है।

बस "फ़ाइल/वीएम कॉर्डम्प जोड़ें" का आह्वान करें और एप्लिकेशन एक्सप्लोरर में एक नया एप्लीकेशन जोड़ देगा। फिर आप उस जेवीएम के थ्रेड डंप या ढेर डंप ले सकते हैं।

+0

फ़ाइल जोड़ने के वीएम coredump है पार्स करने नहीं देखा गया है मेरे लिए भूरे रंग के बाहर। सुनिश्चित नहीं है कि वास्तव में – visch

+0

क्यों हैं यदि आप विंडोज़ पर हैं, तो यह समर्थित नहीं है और दुर्भाग्यवश बाहर हो जाएगा। मैं भी उसी नाव पर सवार हूं। http://visualvm.java.net/coredumps.html यदि सोलारिस या लिनक्स पर विजुअलVM चल रहा है तो कोर डंप नोड अनुप्रयोग विंडो में दिखाई दे रहा है। –

0

jhat सबसे अच्छा मैं इतना far.To एक कोर डंप ले इस्तेमाल किया है में से एक है, मैं आपको लगता है बेहतर इस्तेमाल jmap और JPS गकोर के बजाय (मैंने इसका उपयोग नहीं किया है)। जाट का उपयोग करने के तरीके को देखने के लिए लिंक देखें। http://www.lshift.net/blog/2006/03/08/java-memory-profiling-with-jmap-and-jhat

0

http://www.oracle.com/technetwork/java/javase/tsg-vm-149989.pdf देखें। आप मूल फ़ाइल पर सीधे "jdb" का उपयोग कर सकते हैं।

+0

यह एक बहुत बड़ा पीडीएफ है जिसे आपने वहां जोड़ा है। जो कुछ भी आप संदर्भित कर रहे हैं उसे पॉइंटर दे रहा है? –

6

आप एक आईबीएम JVM, downloadआईबीएम थ्रेड का उपयोग करने और डंप विश्लेषक मॉनिटर रहे हैं। यह एक उत्कृष्ट उपकरण है। यह थ्रेड विवरण प्रदान करता है और डेडलॉक्स इत्यादि को इंगित कर सकता है। निम्नलिखित blog post इसका उपयोग करने के तरीके पर एक अच्छा अवलोकन प्रदान करता है।

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