2009-05-11 8 views
9

मैं सूर्य के जेडीके 1.4.2_18 पर चल रहे किसी एप्लिकेशन में मेमोरी लीक डिबग कर रहा हूं। ऐसा प्रतीत होता है कि यह संस्करण कमांड लाइन param -XX: + HeapDumpOnCtrlBreak का समर्थन करता है जो माना जाता है कि JVM को नियंत्रण-ब्रेक से सामना करने पर ढेर को ढेर करने का कारण बनता है। लिनक्स बॉक्स पर पृष्ठभूमि प्रक्रिया में इसे कैसे भेजा जाता है? ऐसा प्रतीत होता है कि मारने के संकेतों को जिस तरह से काम करना चाहिए, लेकिन मैं मारता हूं -एल कुछ भी रिपोर्ट नहीं करता है जो स्पष्ट रूप से एक Ctrl-Break है, कम से कम मेरे उबंटू बॉक्स पर।किसी एक चल रहे लिनक्स प्रक्रिया में Ctrl-Break कैसे भेज सकता है?

अपडेट: मैंने सूर्य जेडीके 1.4.2_18 के साथ किल -3 का परीक्षण किया (_14 इस तरह ढेर डंप करने वाला पहला व्यक्ति था), और यह काम किया। एक हीप डंप फ़ाइल बनाई गई थी, और प्रक्रिया अभी भी चल रही थी।

उत्तर

10

kill -QUIT ऐसा कर सकता है (यह एक थ्रेड डंप उत्पन्न करेगा जो विंडोज़ पर ctrl-break द्वारा उत्पन्न होता है। हालांकि मैंने इसे हीप डंप विकल्प के साथ आजमाया नहीं है)।

+0

मेरे पास एक जेवीएम के साथ एक लिनक्स बॉक्स नहीं है जो -XX: + HeapDumpOnCtrlBreak विकल्प का समर्थन करता है, इसलिए इसका परीक्षण नहीं कर सकता (और मैंने वास्तव में ऐसा कभी नहीं किया है यह काम नहीं कर सकता कि यह काम करता है)। – bm212

+0

मैं "हत्या -3" की तुलना में "हत्या -QUIT" का एक सुझाव देखता हूं, भले ही वे समकक्ष हों। – ephemient

+0

मैंने इसे मारने के लिए संपादित किया है -QUIT। – bm212

14

Ctrl- \ विंडोज़ Ctrl-Break के यूनिक्स/लिनक्स समकक्ष है। Wikipedia मुझे यह भी बताता है कि आप लिनक्स वर्चुअल कंसोल पर Ctrl-4 या SysRq का भी उपयोग कर सकते हैं (मुझे लगता है कि आपको उन सामान्य प्रेस (एसएसएच/टेलनेट पर) के प्रतिनिधित्व को पारित करने के लिए सामान्य टर्मिनल एमुलेटर के लिए अजीब कुछ चाहिए।

+1

हां, आमतौर पर टर्मिनल सिगक्विट भेजने के लिए सी-\ के लिए बाध्य है। यह 'stty quit' के साथ कॉन्फ़िगर करने योग्य है, और मुझे यकीन नहीं है कि यह सभी सिस्टम पर डिफ़ॉल्ट है या नहीं। – ephemient

+0

@ एपमेन्टेंट यह हमेशा नहीं होता है, लेकिन यहां तक ​​कि विदेशी टर्मिनल भी इसका उपयोग करते हैं। मेरा आईबीएम 3161 उदाहरण के लिए करता है। http://i.imgur.com/6DejIxY.jpg – Wyatt8740