2013-01-22 54 views
28

क्या मैं कमांडलाइन से चल रहे JVM के ढेर उपयोग की जांच कर सकता हूं, मेरा मतलब एक्सएमएक्स के साथ आवंटित अधिकतम राशि के बजाय वास्तविक उपयोग है।कमांड लाइन से चल रहे JVM के ढेर उपयोग को कैसे जांचें?

मैं क्योंकि मैं एक विंडोइंग पर्यावरण के लिए पहुँच नहीं है यह कमांडलाइन होने की जरूरत है, और मैं मूल्य, आवेदन की तरह जेट्टी आवेदन सर्वर में चल रहा है

उत्तर

43

आप jstat उपयोग कर सकते हैं, के आधार पर स्क्रिप्ट हैं:

jstat -gc pid 

पूर्ण यहाँ डॉक्स: http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html

+0

ठनक अधिकतम कि था दिखा जो मैं चाहता है, हालांकि सभी विकल्पों को समझने के लिए कुछ समय लग सकता है, मैं मूल रूप से लिए देख रहा था की तरह लग रहा ओसी के साथ कैसे ढेर के बहुत –

+2

प्रयोग किया जाता है तो मुझे लगता है कि, OU कुंजी स्तंभ है आवंटित –

+4

@ पॉल टायलर आप ईयू और ओयू कॉलम चाहते हैं - उन्हें जोड़ना आपको उपयोग की जाने वाली ढेर की मात्रा देता है। ईसी और ओसी कॉलम जोड़ना आपको ढेर के लिए आवंटित राशि देता है। – pacoverflow

8

आप पर आप फ़ाइल पर जानकारी प्राप्त जीसी प्रवेश के साथ निष्पादन कर दिया शुरू करते हैं। अन्यथा 'jmap -heap' आपको वही देगा जो आप चाहते हैं। अधिक के लिए jmap doc page देखें।

कृपया ध्यान दें कि jmapउत्पादन परिवेश में नहीं इस्तेमाल किया जाना चाहिए जब तक कि पूरी तरह से जरूरत के रूप में उपकरण वास्तविक ढेर उपयोग निर्धारित करने के लिए सक्षम होने के लिए आवेदन रुक जाता है। आमतौर पर यह उत्पादन वातावरण में वांछित नहीं है। kB उत्तरजीवी अंतरिक्ष 0 उपयोग (:

10

जावा 8 के लिए आप kB में ढेर स्थान उपयोग पाने के लिए निम्न आदेश पंक्ति का उपयोग कर सकते हैं:

jstat -gc <PID> | tail -n 1 | awk '{split($0,a," "); sum=a[3]+a[4]+a[6]+a[8]; print sum}' 

आदेश मूल रूप से का सार:

  • S0U)।
  • एस 1 यू: उत्तरजीवी अंतरिक्ष 1 उपयोग (केबी)।
  • यूरोपीय संघ: ईडन अंतरिक्ष उपयोग (केबी)।
  • ओयू: पुरानी जगह उपयोग (केबी)।

आप मेटास्पेस और संपीड़ित कक्षा स्थान उपयोग को भी शामिल करना चाहते हैं। इस मामले में आपको अजीब राशि में एक [10] और एक [12] जोड़ना होगा।