2013-11-27 11 views
10

मैंने इस Get a heapdump on JVM from Tomcat 6 को आजमाया है, लेकिन यह मेरे लिए काम नहीं करता है, क्या टॉमकैट सर्वर से हीप डंप प्राप्त करने के अन्य तरीके हैं? अग्रिम में धन्यवाद!तरीके टोमकैट चलाने से हीप डंप कैसे प्राप्त करें 7

+0

ढेर डंप बनाने की कोशिश करने में आप क्या समस्या उठा रहे हैं? – Taky

+0

जब आप स्मृति से बाहर जेवीएम मर जाते हैं तो आप केवल ढेर डंप बनाते हैं। जब भी आप चाहें, यह आपको हेपडम्प बनाने की अनुमति नहीं दे रहा है। लेकिन यह अभी भी आपके लिए बहुत उपयोगी विकल्प है। – Taky

उत्तर

17

ढेर डंप प्राप्त करने का सबसे आसान तरीका jmap का उपयोग करना है। जावा प्रक्रिया के साथ मशीन पर jmap कमांड निष्पादित करें। उपयोग के उदाहरण:

jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842 

उपयोग jps पता करने के लिए जावा Pid।


इसके अलावा आप jvisualvm के माध्यम से हीप डंप बना सकते हैं। आप रिमोट मशीन से jmx या jstatd के माध्यम से कनेक्ट कर सकते हैं। आप रिमोट मशीन पर हेपडम्प और स्टोर कर सकते हैं।

हेपडम्प का विश्लेषण करने के लिए आप सलाह दे सकते हैं: MAT। बहुत शक्तिशाली उपकरण जो आपको समस्याओं को जल्दी से समझने की अनुमति देता है। आप MAT12 के लिए here अच्छा इन्रो पा सकते हैं।


आप एक लंबे समय आप द्विआधारी डंप कर सकते हैं (You can use gcore or gdb) के लिए आवेदन को रोकने के लिए नहीं करना चाहते हैं। और आप use jmap to analyze gdb dump कर सकते हैं। अधिक जानकारी आप atlassian blog पर पढ़ सकते हैं। someissues से सावधान रहें।

+0

आपको "सुडो" का उपयोग करना पड़ सकता है – th3morg

5

"डंप ढेर" के अलावा एक और तरीका - jvisualvm का बटन जेएमएक्स-इंटरफेस के माध्यम से है। इस तरह से आप यह निर्दिष्ट करने की अनुमति भी देते हैं कि डंप को स्टोर करना है।

जेएमएक्स-प्लगइन के साथ jconsole या jvisualvm का उपयोग कर टोमकैट के जेएमएक्स-सर्वर से कनेक्ट करें। फिर com.sun.management ->HotSpotDiagnotic ->Operations पर मिला। dumpHeap के बगल में दो पैरामीटर भरें। ओरेकल के दस्तावेज़ से (here देखें):

पैरामीटर:

outputfile - प्रणाली पर निर्भर फ़ाइल नाम

लाइव - अगर सच डंप ही रहते हैं वस्तुओं वस्तुओं है कि दूसरों से पहुंचा जा सकता है यानी

फिर dumpHeap दबाएं और डंप लिखते समय कुछ समय के लिए वीएम फ्रीज देखें।

1

मैं दृश्य वीएम http://visualvm.java.net/ की सलाह देता हूं यह एक उपकरण में है जो टोमकैट से कनेक्ट हो सकता है, हेप डंप बना और पढ़ सकता है, थ्रेड डंप, सीपीयू और मेमोरी सैंपलर बनाता है।

यदि आप नए जेडीके 1.7 का उपयोग करते हैं, तो VisualVM पहले से ही आपके जेडीके फ़ोल्डर में पैक किया गया है।

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