2008-10-27 18 views
27

निष्पादन के दौरान, जावा प्रोग्राम कैसे बता सकता है कि यह कितनी मेमोरी का उपयोग कर रहा है?निष्पादन के दौरान, जावा प्रोग्राम कैसे बता सकता है कि यह कितनी मेमोरी का उपयोग कर रहा है?

मुझे परवाह नहीं है कि यह कितना कुशल है!

उत्तर

30

VonC का जवाब एक इंटरैक्टिव समाधान है - यदि आप प्रोग्राम के जानना चाहते हैं, तो आप Runtime.totalMemory() उपयोग कर सकते हैं कुल JVM द्वारा इस्तेमाल किया राशि पता लगाने के लिए, और Runtime.freeMemory() पता लगाने के लिए इस बात का ज्यादा अभी भी उपलब्ध है (यानी यह आवंटित है को JVM, लेकिन को के भीतर आवंटित नहीं किया गया है - नई वस्तुएं इस स्मृति का उपयोग कर सकती हैं)।

ये उदाहरण विधियां हैं - पहले सिंगलटन उदाहरण प्राप्त करने के लिए Runtime.getRuntime() का उपयोग करें।

+0

आप सही हैं (मेरी प्रारंभिक प्रतिक्रिया बाहरी से निगरानी करने के लिए थी), +1 आपको;) – VonC

+0

जॉन स्कीट, हैलो, क्या आप कृपया मुझे बता सकते हैं कि सी # के लिए ऐसा कैसे करें? जावा में मैं कुल से मुक्त घट जाएगा, है ना? और सी # में केवल प्रोसेस क्लास में PrivateMemorySize64 मिला, लेकिन मुझे लगता है कि केवल कुल मेमोरी देता है, है ना? – Pavel

+0

@ पुलपॉल 1076: इसके लिए एक नया प्रश्न पूछना बेहतर होगा। –

4

आप एक java1.6 कहीं हैं और अपने कार्यक्रम जावा 1.4.2, 1.5 या 1.6 में चल रहा है, तो आप एक visualVM session शुरू कर सकते हैं, आपके एप्लिकेशन से कनेक्ट, और स्मृति का पालन करें (और भी बहुत कुछ)

image of monitoring application with Visual VM

(छवियों पल में प्रदर्शित नहीं होते हैं, तो एक उदाहरण के लिए Monitoring an application को संदर्भित करता है।)

+0

धन्यवाद सीएमएस, और धन्यवाद, जो भी इसे ऊपर उठाया गया है ... इस पर विचार करना कि उपयोगकर्ता ने अनुरोध किया था;) – VonC

4

यह सटीक नहीं होगा, लेकिन किसी न किसी अनुमान के लिए, Runtime.getRuntime.totalMemory() से Runtime.getRuntime.freeMemory() घटाएं। JVM's ओवरहेड मेमोरी उपयोग और निष्पादन में अंतराल पर अंतराल पर विचार करने के लिए कार्यक्रम की शुरुआत में ऐसा करें।