2011-09-29 11 views
5

का उपयोग कब करें Runtime.maxMemory() और Runtime.totalMemory() के बीच सटीक अंतर क्या है? जावाडोक इस बारे में काफी अस्पष्ट है (मेरे लिए)।Runtime.maxMemory() और कुल मेमरी()

इन दो तरीकों के लिए सामान्य उपयोग के मामले क्या हैं, यानी, संबंधित दूसरे का उपयोग करने के लिए अनुचित कब होगा?

उत्तर

6

totalMemory() वर्तमान में कितनी मेमोरी का उपयोग किया जाता है, जबकि maxMemory() बताता है कि JVM कुल में कितना आवंटित कर सकता है।

नोट: है कि इस प्रकार है: totalMemory() <= maxMemory(), और आप भी प्राप्त कर सकते हैं 'कितनी स्मृति छोड़ दिया है' maxMemory() - totalMemory()

एक उपयोग के मामले से इस बात के लिए कितनी स्मृति अपने कार्यक्रम का उपयोग करता है निदान करने के लिए है, और आप इसके लिए totalMemory() का उपयोग करेंगे।
नोट: दोनों केवल स्मृति को ढेर करने के लिए संदर्भित हैं, और स्मृति को ढेर नहीं करते हैं।

+0

"कुल मेमरी() लौटाता है कि वर्तमान में कितनी मेमोरी का उपयोग किया जाता है" उपयोग किया गया ?! आपका मतलब आवंटित है? –

5

कुल मेमोरी वर्तमान में जेवीएम को आवंटित स्मृति है। यह समय के साथ बदलता है। अधिकतम मेमोरी अधिकतम मेमोरी है जो JVM कभी भी पहुंच सकता है। यह कुल स्मृति की ऊपरी सीमा है।

3

MaxMemory() जो इस्तेमाल किया स्मृति के संयोजन वर्तमान में वस्तुओं और जावाडोक मूल्य प्रति नया objects.As के लिए उपलब्ध मुक्त स्मृति के कब्जे में है मूल्य Xmx पैरामीटर

+0

प्रोग्राम शुरू होने के बाद Xms पैरामीटर कैसे प्राप्त करें? –

0

totalMemory() जो JVM की वर्तमान ढेर आकार का प्रतिनिधित्व द्वारा निर्धारित है कुल मेमरी() द्वारा लौटाया पर्यावरण के आधार पर समय के साथ भिन्न हो सकता है। JVM totalMemory भी JVM के ढेर आकार प्रारंभिक बराबर होती है

अधिकतम ढेर अंतरिक्ष हमेशा JVM जीवन cycle.Jvm से अधिक बदलने के लिए) totalMemory (के आकार का विस्तार करने के लिए करने के लिए नई वस्तु का कोई बनाया लेकिन अनुसार की कोशिश कर रहा नहीं जा रहा है maxMemory() आकार unles से परे हम java.lang.OutOfMemoryError प्राप्त करेंगे।

+0

"समय के साथ भिन्न हो सकता है" कम या ज्यादा कहता है कि "प्रारंभिक ढेर आकार के बराबर" सामान्य मामले में विश्वसनीय होने की संभावना नहीं है। – Gus

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