2015-06-29 5 views
7

मैं अपने वसंत आवेदन को प्रोफाइल करने के लिए JVM Explorer - link to JVM Explorer का उपयोग कर रहा हूं। मेरे पास इसके बारे में निम्नलिखित प्रश्न हैं।ढेर मेमोरी उपयोग क्यों करें और लोड की गई कक्षाओं की संख्या बढ़ती जा रही है?

  • क्यों 'प्रयुक्त ढेर मेमोरी' रहता है बढ़ रही है के बाद भी आवेदन अप शुरू कर दिया है और अभी तक कोई अनुरोध नहीं मिला है? (छवि 1)

  • कचरा संग्रह के बाद और किसी भी अनुरोध प्राप्त करने से पहले 'प्रयुक्त हीप मेमोरी' बढ़ती रहती है? (छवि 2)

  • कचरा संग्रह के बाद क्यों, लोड किए गए वर्गों के आवेदन संख्या में कुछ अनुरोध भेजकर बढ़ रहा है? क्या पिछले वर्गों का उपयोग करने वाला आवेदन नहीं है? यह लगभग हर चीज क्यों बढ़ रहा है (ढेर, भारित वर्गों की संख्या)? (छवि 3)

    के बाद आवेदन शुरू होता है - enlarge image enter image description here

    'भागो कचरा कलेक्टर' बटन पर क्लिक करने के बाद। - enlarge image

enter image description here

कूड़ा संग्रह प्रक्रिया पूरा होने के बाद आवेदन करने के लिए कुछ अनुरोध भेजने के बाद - enlarge image

enter image description here

उत्तर

4

'प्रयुक्त ढेर मेमोरी' क्यों रहता है आवेदन के बाद भी बढ़ रहा है शुरू हो गया है और अभी तक कोई अनुरोध नहीं मिला है? (छवि 1) अपने JVM में

कुछ वस्तुओं पैदा कर रही है। यह देखने के लिए आपको एक मेमोरी प्रोफाइलर की आवश्यकता होगी। यह स्विंग, या योरू एप्लिकेशन या दूसरी लाइब्रेरी का हिस्सा हो सकता है।

बीटीडब्ल्यू अधिकांश प्रोफाइलिंग उपकरण जेएमएक्स का उपयोग करते हैं जो बहुत सारे कचरे को संसाधित करता है। जैसे जब मैं अपने कुछ अनुप्रयोगों पर FlightRecorder या VisualVM चलाता हूं तो यह दिखाता है कि जेएमएक्स निगरानी अधिकांश कचरा बना रही है।

भी कचरा संग्रहण के बाद और किसी भी अनुरोध 'प्रयुक्त ढेर मेमोरी' प्राप्त करने से पहले क्यों बढ़ रही रखता है? (छवि 2)

जो वस्तुओं का निर्माण कर रहा है अभी भी वस्तुओं पैदा कर रही है।

कचरा संग्रहण के बाद क्यों, लोड किए गए वर्गों के आवेदन संख्या में कुछ अनुरोध भेजकर बढ़ रहा है?

कक्षाएं आलसी लोड हो गई हैं। जब तक आप कुछ नहीं करते हैं तब तक कुछ कक्षाओं की आवश्यकता नहीं होती है।

क्या पिछले कक्षाओं का उपयोग करने वाला आवेदन नहीं है?

हाँ, लेकिन इसका मतलब यह नहीं है कि इसे और कक्षाओं की आवश्यकता नहीं होगी।

यह लगभग हर चीज क्यों बढ़ रहा है (ढेर, भारित वर्गों की संख्या)? (छवि 3)

आपका आवेदन अधिक काम कर रहा है।

यदि आप जानना नहीं चाहते कि एप्लिकेशन क्या कर रहा है, तो मैं VisualVM या Flight Recorder जैसे मेमोरी प्रोफाइलर का उपयोग करने का सुझाव देता हूं। मैं इस तरह के प्रश्नों के लिए YourKit का उपयोग करता हूं।

नोट: जावा प्रोग्राम को ट्यून करने में कड़ी मेहनत होती है ताकि यह कचरा उत्पन्न न करे और मैं कहूंगा कि अधिकांश पुस्तकालय केवल कचरे को कम करने का प्रयास करते हैं यदि यह ज्ञात प्रदर्शन समस्या का कारण बनता है।

+0

आपके उत्तर के लिए धन्यवाद, मैंने VisualVM का उपयोग करने की कोशिश की लेकिन इसे चलाने के लिए प्रबंधित नहीं किया जा सका। एक्लिप्स के साथ एकीकृत करने के लिए कौन सा प्रोफाइलर सबसे अच्छा है? मेरा प्रश्न जो VisualVM से संबंधित है, यहां है http://stackoverflow.com/questions/31064849/visualvm-is-unable-to-profile-a-web-plication-on-eclipse –

+0

@ DanielNewton मैं कहूंगा कि ग्रहण और दृश्य वीएम तीसरे पसंदीदा आईडीई और प्रोफाइलर्स हैं जो मैं आते हैं। जब मैंने आपकेकिट के साथ इंटेलिज का उपयोग किया है तो मुझे कोई समस्या नहीं है। –

+0

मैं फ्लाइट रिकॉर्डर के बारे में कैसे देखता हूं? –

1

मैं @ PeterLawrey के अच्छे जवाब चाहते, लेकिन यह वहाँ याद आ रही है:

स्मृति मुख्य रूप से करने के लिए है इस्तेमाल किया जा, बख्शा होने के लिए नहीं। यह आसानी से यह मामला हो सकता है कि आपका एप्लिकेशन अच्छी तरह से लिखा गया है: यह एक छोटी मेमोरी के साथ काम कर सकता है और यह इसकी सभी ज़रूरतों को फिर से बना सकता है, लेकिन यह इस तथ्य का कुशलतापूर्वक उपयोग कर सकता है कि आपके सिस्टम में बहुत मेमोरी है और आवेदन अधिक कुशलतापूर्वक काम करने के लिए सभी संभावित स्मृति का उपयोग करता है।

मैं आसानी से कल्पना कर सकता हूं कि स्मृति को ले जाने वाली चीज उदाहरण के लिए कैश है। यदि कैश में बहुत अधिक डेटा होता है, तो एप्लिकेशन तेज़ी से काम करता है।

यदि आपके पास OutOfMemoryError जैसे मुद्दे नहीं हैं तो आपको जरूरी चिंता करने की आवश्यकता नहीं है। आपको अभी भी सतर्क रहना चाहिए और इसका निरीक्षण करना चाहिए, लेकिन आपकी वर्णित स्थिति स्वचालित रूप से का अर्थ यह नहीं है कि कुछ गलत है।

यह विंडोज उपयोगकर्ताओं के निरंतर विलाप के समान है कि "मैंने और अधिक मेमोरी खरीदी है लेकिन मेरा विंडोज़ इसका सब कुछ उपयोग करता है" - यह तब अच्छा होता है जब स्मृति का उपयोग किया जा रहा है! यही वह है जिसे हम खरीदते हैं!

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