2011-01-11 23 views
6

मैं वेबस्टार्ट को एक ढेर डंप पर डंप करने की कोशिश कर रहा हूं जब यह स्मृति से बाहर हो जाता है।जावा वेबस्टार्ट हीप डंप

मुझे यह करने का jmap/jconsole तरीका पता है, लेकिन मैं वास्तव में क्या करना चाहता हूं, jnlp फ़ाइल में विकल्प जोड़ें और निम्न विकल्पों को आजमाया है।

  1. J2SE संस्करण = "1.6+" जावा-VM-आर्ग = "- सर्वर + HeapDumpOnOutOfMemoryError" अधिकतम-ढेर आकार = "768M"
  2. J2SE संस्करण = "1.6+" जावा-VM-आर्ग = "-server -XX: + HeapDumpOnOutOfMemoryError" अधिकतम-ढेर आकार = "768M"
+1

जब आप उन विकल्पों के साथ प्रोग्राम चलाते हैं तो आपको क्या परिणाम मिलते हैं? – Davidann

+0

क्योंकि इसमें क्लाइंट के कंप्यूटर में हेरफेर करना शामिल है (स्थानीय कंप्यूटर पर फ़ाइल डंप करना)। अगर इस विकल्प के आसपास सुरक्षा नियंत्रण हैं तो मुझे आश्चर्य नहीं होगा। इसे पूरी तरह से अस्वीकार कर दिया जा सकता है, या अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। – jtahlborn

+0

क्या आपने उदाहरण के लिए पथ निर्दिष्ट करने का प्रयास किया है- -XX: HeapDumpPath =/tmp'? –

उत्तर

2

यह निश्चित रूप से काम नहीं करेगा जब आप jnlp फाइल करने के लिए इस विकल्प को जगह। अनुमत विकल्पों की एक सूची है और अन्य को अनदेखा कर दिया जाएगा। आप documentation में उपलब्ध जेवीएम विकल्पों की सूची देख सकते हैं।

ध्यान दें कि विचार यह है कि अंतिम उपयोगकर्ता आपको अपने कंप्यूटर पर एप्लिकेशन चलाएगा। आप अपने COMP पर ढेर डंप के साथ क्या करेंगे? यह आपके ऐप को चलाने वाले दुनिया में कोई भी हो सकता है। यदि आपको अपने जेएनएलपी फ़ाइल के माध्यम से अंतिम उपयोगकर्ताओं JVM के साथ ऐसा करने की अनुमति दी गई तो यह अधिक समझ में नहीं आएगा।

एकमात्र स्थिति जिसके बारे में मैं सोच सकता हूं, क्या आपके पास उस कंप्यूटर तक पहुंच होगी और आप बाद में डंप की जांच कर सकते हैं। उस स्थिति में (आप अंतिम उपयोगकर्ता के रूप में डंप का अनुरोध करते हैं) यह वास्तव में संभव है यदि आप ब्राउज़र से jnlp फ़ाइल के autorun को बाईपास करते हैं और इसे javaws कमांड के माध्यम से चलाते हैं। चरणों मैं ले जाया गया और जो है सफलता के लिए नेतृत्व के रूप में निम्नानुसार किया गया (मान jnlp फ़ाइल testOOM.jnlp था और आप खिड़कियों पर कर रहे हैं):

  1. कमांड लाइन से JNLP फ़ाइल
  2. डाउनलोड के साथ निर्देशिका के लिए नेविगेट JNLP फ़ाइल
  3. निष्पादित javaws -verbose -J-XX:+HeapDumpOnOutOfMemoryError testOOM.jnlp

का उपयोग करते हुए इस एप्लिकेशन को ब्राउज़र से के रूप में बहुत ही तरीके से शुरू किया जाएगा। लेकिन -J विकल्प पर ध्यान दें जो आपको JVM में JVM विकल्प प्रदान करने की अनुमति देता है। यह ठीक है क्योंकि यह ईबीबी उपयोगकर्ता क्लाइंट है जिसने डंप का अनुरोध किया था।

OutOfMemoryError पर हीप डंप उसी निर्देशिका में संग्रहीत किया जाएगा जहां से आप अपना javaws कमांड चलाते हैं।

+0

बहुत बहुत धन्यवाद, हम आंतरिक रूप से वितरित कर रहे हैं ताकि हम वास्तव में डंप प्राप्त कर सकें, देखेंगे कि हम इसे – benjipete

+0

निष्पादित करने के लिए एक स्क्रिप्ट प्राप्त कर सकते हैं :) –

+0

यह मुझे सही समझ में आता है कि कोई डेवलपर वेबस्टार्ट एप्लिकेशन चाहता है एक ढेर डंप उत्पन्न करें। आप सही हैं कि उत्पादन एप में ऐसे कई उपयोगकर्ताओं के साथ जो डेवलपर के साथ सीधे संपर्क नहीं है, यह अपमानजनक होगा। हालांकि, विकास के दौरान बीटा उपयोगकर्ता, परीक्षण उपयोगकर्ता, और उपयोगकर्ता विकास टीम पर भी हैं। यह मेरा मामला है ... और अगर यह उत्पन्न होता है तो वे ढेर डंप फ़ाइल को पाने के लिए पर्याप्त समझदार हैं।यह विकल्प असाधारण रूप से उपयोगी होगा और मुझे पूरी तरह से समझ में आता है। – Jason

4

Java 7 Release Notes के अनुसार, -XX: + HeapDumpOnOutOfMemoryError विकल्प अब वेबस्टार्ट एप्लिकेशन (RFE: 6664424) के लिए समर्थित है।

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