2009-12-10 5 views
12

हमारे पास जेएनआई का उपयोग कर डेस्कटॉप एप्लिकेशन है जो कभी-कभी जेवीएम को क्रैश करने का कारण बनता है। सौभाग्य से JVM hs_err_pidXXXX.log फ़ाइल बनाता है, जो ऐसी त्रुटियों को डीबग करने में काफी उपयोगी है। हालांकि, यह हमेशा मौजूदा कामकाजी निर्देशिका में जाना प्रतीत होता है, और वहां से इसे खोदना मुश्किल है, क्योंकि हमारी अन्य लॉग फाइलें सभी एक विशिष्ट "लॉग फ़ाइल प्लेस" पर जाती हैं।क्या यह निर्दिष्ट करना संभव है कि JVM के क्रैश डंप कहां जाते हैं?

क्या उन "क्रैश डंप" फ़ाइलों के लिए अलग-अलग स्थान निर्दिष्ट करना संभव है? कैसे?

उत्तर

12

Joonas,

हालांकि HeapDumpPath ढेर के लिए काम करता डंप यह अपने प्रश्न के लिए इस सवाल का जवाब नहीं है। हीप डंप और जेवीएम क्रैश लॉग दो अलग-अलग चीजें हैं।

इस विकल्प के साथ JVM क्रैश लॉग रन जावा का गंतव्य बदलने के लिए:

-XX:ErrorFile=/path/to/file. 

path/to/फ़ाइल जगह आप उत्पादन के लिए JVM क्रैश लॉग चाहते हैं।

+0

इस विकल्प के साथ जावा कैसे चलाएं? मैं cmd ​​ –

+1

@MuhammedRefaat के माध्यम से ऐसा नहीं कर सका: 'जावा -XX: त्रुटिफाइल =/पथ/से/file.log -jar myapp.jar' – sja

+0

@sja बहुत बहुत धन्यवाद –

9

डिफ़ॉल्ट रूप से हीप डंप को वीएम की कार्य निर्देशिका में java_pidpid.hprof नामक फ़ाइल में बनाया गया है। आप -XX के साथ एक वैकल्पिक फ़ाइल नाम या निर्देशिका निर्दिष्ट कर सकते हैं: HeapDumpPath = विकल्प। उदाहरण के लिए -XX: हेपडंपपैथ =/डिस्क 2/डंप/डिस्क 2/डंप निर्देशिका में हीप डंप उत्पन्न होने का कारण बन जाएगा।

+1

-1 प्रश्न क्रैश लॉग के बारे में है, स्वीकृत उत्तर बिंदुओं के रूप में ढेर डंप नहीं। यह अभी भी अच्छी जानकारी है लेकिन इस प्रश्न का उत्तर नहीं है। –