2012-03-23 22 views
10

मुझे जावा एप्लिकेशन मिला है जो आधा समय बस लटकता है, और दूसरा आधा JVM क्रैश हो जाता है। क्या कोई उपकरण है जिसका उपयोग मैं यह देखने के लिए कर सकता हूं कि यह क्या हो रहा है और इसे लटका देता है? मैं CentOS 5.6जावा एप्लिकेशन में डिबगिंग के लिए उपकरण

उत्तर

15

दो अलग-अलग मामले हैं।

आवेदन क्रैश: क्या वह ओओएम था? एनपीई? अपवाद क्या था? यदि jvm क्रैश था तो आपको hs_err_.log (http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)

उस फ़ाइल को देखकर आप देख सकते हैं कि क्या आपका स्वयं का जेएनआई क्रैश या जेवीएम बग का कारण बनता है।

आवेदन हैंग: मैं विजुअलवम या जेएसटीटी (दोनों जेडीके का हिस्सा हैं) से शुरू होगा। आप धागे की वर्तमान स्थिति को देखते हैं और अगर कोई अनुप्रयोग त्रुटि है जाँच कर सकते हैं ..

अन्य Linux उपकरण प्रक्रिया अंदर देखने के लिए मदद कर सकता है:

  • lsof: आप देख सकते हैं कि प्रक्रिया भी खोला कई फाइलें
  • strace: सिस्टम कॉल पॉइंट व्यू से वर्तमान गतिविधि देखें।

Oracle tools documentation सुंदर साफ सूची प्रदान करता है। यह Operating System Specific tools

+0

@ Bubby4j: क्या आप क्रैश कारण को खोजने में सक्षम थे? क्या ओएस के साथ क्या करना था? मैं अपने उपकरण, एक जावा आधारित एक को तैनात करने के लिए केंद्रों का मूल्यांकन करने जा रहा हूं। – Jayan

+0

यह ओपनवज़ के साथ एक समस्या थी। –

13

स्टार्टर्स के लिए उपयोग कर रहा हूं, मैं JVisualVM का सुझाव दूंगा। यह जेडीके के साथ आता है, इसलिए आपको इसे शुरू करने के लिए कमांड लाइन में jvisualvm टाइप करना होगा।

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


अन्य उपयोगी अंतर्निहित टूल में शामिल हैं:

jps जावा चलाने का सूचियों प्रक्रिया आईडी प्रक्रियाओं

jstack निर्दिष्ट JVM प्रक्रिया

jmap एक को बनाने वाला प्रत्येक थ्रेड के लिए एक ढेर डंप प्रिंट निर्दिष्ट जेवीएम प्रक्रिया के लिए हीप डंप (jvisualvm भी ढेर डंप उत्पन्न कर सकता है)

jhat जेएमएपी या जेविसुअलवीएम


के साथ उत्पन्न ढेर डंप का विश्लेषण करता है, और अधिक परिष्कृत प्रोफाइलर भी उपलब्ध हैं। JProfiler काफी सम्मानित है।

2

इन मामलों में (हैंग, फ्रीज, ...) आपको अपने आवेदन में क्या हो रहा है, यह जानने के लिए एक ढेर डंप का विश्लेषण करना है, आप डंप लेने के लिए JVisualVM का उपयोग कर सकते हैं, या आप कर सकते हैं एक दुर्घटना के मामले में ढेर की सामग्री डंप करने के लिए उचित JVM पैरामीटर जोड़ें।