2013-02-04 13 views
7

क्या निम्न ग्राफ इंगित करता है कि मैं स्मृति का उपयोग कर रहा हूं और यह कचरा नहीं जा रहा है?जावा में मेमोरी रिसाव का यह संकेतक है?

enter image description here

मैं नारंगी ग्राफ (आवंटित ढेर) नीचे जाने के लिए एक बार मैं ढेर के कम का उपयोग शुरू की उम्मीद है।

  • क्या यह एक अवैध धारणा है?
  • एक बार आवंटित, ढेर नहीं हटना है जब तक कार्यक्रम बंद कर देता है?
+2

देखना सबसे JVMs पर, जब तक कार्यक्रम समाप्त होता है एक बार ढेर आवंटित किया जाता है इसे छोटा नहीं है। –

उत्तर

10

यह ग्राफ से स्पष्ट है कि आपका जेवीएम ढेर को कम करने में सक्षम है। इसे नारंगी रेखा से 3:10 बजे से पहले थोड़ी सी डुबकी से देखा जा सकता है।

हालांकि, बाद में JVM पर ढेर हटना नहीं चुनता है। यह लगभग निश्चित रूप से है क्योंकि ढेर का अपर्याप्त रूप से बड़ा अंश अप्रयुक्त है। व्यवहार -XX:MinHeapFreeRatio और -XX:MaxHeapFreeRatio द्वारा नियंत्रित किया जाता है।

एक चर्चा के लिए, http://stopcoding.wordpress.com/2010/04/12/more-on-the-incredible-shrinking-jvm-heap/

+0

बहुत बढ़िया, धन्यवाद। :) – sdasdadas

+0

+1 देखें कि प्रत्येक पूर्ण जीसी के बाद कितना उपयोग किया जाता है। यदि आपको पूर्ण जीसी की कमी की आवश्यकता है तो आप अतिरिक्त लोगों को ट्रिगर कर सकते हैं, यह इंगित करता है कि आपको कोई समस्या नहीं है (या आपका रिसाव बहुत धीमा है) –