JBoss के लिए ढेर डंप के लिए HeapDumpOnOutOfMemoryError पैरामीटर का उपयोग करना


182

मुझे बताया गया था कि हम -XX:+HeapDumpOnOutOfMemoryErrorअपने JVM स्टार्ट अप विकल्पों के लिए पैरामीटर जोड़ सकते हैं मेरे JBoss स्टार्ट अप स्क्रिप्ट को ढेर डंप करने के लिए जब हम अपने आवेदन में मेमोरी त्रुटि से बाहर निकलते हैं। मैं सोच रहा था कि यह डेटा डंप कहां हो जाता है? यह सिर्फ सांत्वना के लिए है, या कुछ लॉग फ़ाइल के लिए है? यदि यह केवल कंसोल के लिए है, तो क्या होगा यदि मैं कंसोल के माध्यम से यूनिक्स सर्वर में लॉग इन नहीं हूं?


1
मुझे लगता है कि वर्तमान फ़ोल्डर है।
वैलेंटाइन तिहोमिरोव

जवाबों:


246

यहाँ ओरेकल के दस्तावेज का क्या कहना है:

डिफ़ॉल्ट रूप से ढेर डंप java_ pid नामक फ़ाइल में बनाया गया है । VM की कार्यशील निर्देशिका में, जैसा कि ऊपर दिए गए उदाहरण में है। आप विकल्प के साथ एक वैकल्पिक फ़ाइल नाम या निर्देशिका निर्दिष्ट कर सकते हैं -XX:HeapDumpPath=। उदाहरण के लिए निर्देशिका -XX:HeapDumpPath=/disk2/dumps में हीप डंप उत्पन्न होगा /disk2/dumps


16
यह वीएम प्रदर्शन से संबंधित सभी विकल्पों को भी सूचीबद्ध करता है: java.sun.com/javase/technologies/hotspot/…
रवि गुप्ता

4
जरूरी! HeapDump झंडे केवल जावा 1.5.0_07 से उपलब्ध हैं।
रस्टीक्स

14
इसके अलावा यह पहचानना महत्वपूर्ण है कि जेवीएम एक मौजूदा ढेर डंप को अधिलेखित नहीं करेगा HeapDumpPath, आप "Unable to create /tmp/java_pidpid.hprof: File exists"अपने मानक आउट में कुछ इसी तरह देखेंगे । किसी भी भविष्य की डंप फ़ाइलों के लिए रास्ता साफ़ करने के लिए डंप पथ से अपनी डंप फ़ाइल को स्थानांतरित करना सुनिश्चित करें; और <pid>फ़ाइल नाम में एन्ट्रापी बढ़ाने के लिए फ़ाइल नाम में प्लेसहोल्डर का उपयोग करें।
बेन

1
यह बेहद उपयोगी था। एक्लिप्स मेमोरी एनालाइज़र के साथ रिसाव को खोजने में सिर्फ कुछ मिनट लगे।
एरन लोरिंज़

यदि हम फ़ोल्डर को पथ देते हैं जो सिस्टम में मौजूद नहीं है तो क्या होगा? क्या यह फ़ोल्डर बनाएगा और उस फ़ोल्डर के भीतर कूबड़ डंप को धक्का देगा?
विनीत 89०

47

आप इस डंप को UNIX कंसोल से देख सकते हैं।

ढेर डंप के लिए पथ को एक चर के रूप में प्रदान किया जाएगा जहां आपने उल्लिखित चर रखा है।

उदाहरण के लिए:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

आप उल्लेखित पथ पर कंसोल से डंप देख सकते हैं।


4

मुझे यह समझने में मुश्किल हुई कि "वीएम की वर्किंग डायरेक्टरी" का क्या मतलब है। मेरे उदाहरण में, मैं जावा सर्विस रैपर प्रोग्राम का उपयोग जार को निष्पादित करने के लिए कर रहा था - डंप फाइलें उस निर्देशिका में बनाई गई थीं जहां मैंने रैपर प्रोग्राम रखा था, जैसे c: \ myapp \ bin। इसका कारण मुझे पता चला क्योंकि फाइलें काफी बड़ी हो सकती हैं और मैंने उनके स्थान की खोज करने से पहले हार्ड ड्राइव को भर दिया।


आपकी कार्य निर्देशिका pwdx <PID> कमांड के माध्यम से मिल सकती है। पहले एक ps -ef करो | grep java, अपने java app के लिए अपना PID ढूंढें, फिर pwdx <PID> चलाएं। यह आपको कार्यशील निर्देशिका बताएगा।
RCG

2

यदि आप "-XX: HeapDumpPath" विकल्प का उपयोग नहीं कर रहे हैं तो JBoss EAP के मामले में / डिफ़ॉल्ट रूप से हीप डंप फ़ाइल "JBOSS_HOME / bin" निर्देशिका में उत्पन्न होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.