2012-01-10 14 views
10

मैंने पहले से ही संभावित समाधानों की खोज की है, जैसे How to monitor the computer's cpu, memory, and disk usage in Java?। लेकिन बफर और कैश में बिताए गए स्मृति का कहीं भी उल्लेख नहीं किया गया है?जावा में मुफ्त मेमोरी (बफर और कैश समेत) की निगरानी कैसे करें?

उदाहरण के लिए

, लिनक्स पर, free -m के उत्पादन: sigar की

 
      total  used  free  shared buffers  cached 
Mem:   2011  1835  175   0  309  847 
-/+ buffers/cache:  678  1333 
Swap:   1998   0  1998 

मैं पहले से ही परीक्षण किया है उत्पादन है, जो 175 एमबी के रूप में मुक्त स्मृति की रिपोर्ट।

इस प्रश्न का कारण यह पता लगाने के लिए है कि ओएस की छोटी याददाश्त कब बाकी है? free -m के पिछले आउटपुट में, 175 एमबी काफी कम लगता है; लेकिन बफर और कैश जोड़कर यह स्पष्ट है कि मुफ्त मेमोरी वास्तव में 2 जीबी से 1333 एमबी है।

जावा का उपयोग करके संक्षेप में, क्या 1333 एमबी मूल्य मुक्त स्मृति के मूल्य के रूप में प्राप्त करना संभव है? जैसा कि मैंने पहले ही उल्लेख किया है, अब तक मुझे पता है कि 175 एमबी का मूल्य कैसे प्राप्त करें।

+2

चूंकि उत्तर ओएस-विशिष्ट होने की संभावना है, इसलिए आप यह निर्दिष्ट करना चाहते हैं कि आपको कौन सा ओएस (एसएस) समर्थन करने की आवश्यकता है। बस लिनक्स? – NPE

+1

खैर, लक्ष्य लिनक्स है, लेकिन अगर मैं एक क्रॉस-प्लेटफार्म समाधान है तो मैं पसंद करूंगा। मेरे पास विंडोज़ मशीन की जांच करने के लिए हाथ नहीं है, इसलिए मुझे नहीं पता कि खिड़कियां कैश्ड/बफर्ड मेमोरी को अलग से रिपोर्ट करती हैं। विंडोज विशेषज्ञों का स्वागत है: डी – bbaja42

+0

जो मैंने एकत्र किया [यहां से] (http://www.codinghorror.com/blog/2006/09/why-does-vista-use-all-my-memory.html), के आधार पर विंडोज़ टास्क मैनेजर दिखाते हुए चित्र, विंडोज़ में कुल मेमोरी, फ्री मेमोरी और कैश मेमोरी भी अलग है। – bbaja42

उत्तर

1

आप ओएस खुद के लिए स्मृति आंकड़े प्राप्त करने के (नहीं कोशिश कर रहे हैं जेवीएम), आप प्लेटफार्म-विशिष्ट मूल एपीआई कॉल सीधे ओएस पर बनाने के लिए JNA या JNI का उपयोग कर सकते हैं।

1

मैं मुक्त स्मृति के बारे में सीधे पता नहीं है, लेकिन JVM JMX सेम कि, मेरा मानना ​​है कि का कहना है, इस जानकारी को और अधिक: http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html

+0

जैसा कि दिखाया गया है [http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html#summary), जेएमएक्स निम्नलिखित जानकारी दे सकता है: जेवीएम द्वारा ली गई मेमोरी का आकार ओएस में स्मृति, और मुफ्त मेमोरी (बफर और कैश के बिना)। सब अच्छा। लेकिन अभी भी बफर और कैश पर खर्च स्मृति का कोई उल्लेख नहीं है। यदि आवश्यक हो तो कैश्ड मेमोरी को तुरंत पुनः दावा किया जा सकता है। – bbaja42

+0

यदि आप विशेष कक्षाओं, पैकेजों आदि पर खर्च की गई स्मृति के बढ़िया विवरण प्राप्त करने का प्रयास कर रहे हैं, तो मुझे लगता है कि आपको वास्तव में एक प्रोफाइलर की आवश्यकता है, न केवल एक जेएमएक्स मॉनीटर। जब तक आप रुचि रखने वाले वर्गों में अपने स्वयं के एमबीएन्स को जेएमएक्स को यह सामान प्रदान नहीं करते हैं। –

+0

ऐसा लगता है कि हम थोड़ा सा भटक रहे हैं। मुझे जावा क्लास या पैकेज पर खर्च की गई किसी विशेष स्मृति की आवश्यकता नहीं है। गैर-जावा तरीका, सिस्टम कमांड ('फ्री') का उपयोग करके, मैं पूरे ओएस के लिए मुफ्त मेमोरी को माप सकता हूं, इस तरह के मापन के साथ और बफर/कैश के बिना दोनों मुफ्त मेमोरी दिखाते हैं। मैं सोच रहा हूं कि जावा के साथ इसे कैसे किया जाए। – bbaja42

1

मुझे विश्वास है कि जावा एपीआई का उपयोग कैस/बफर नंबर प्राप्त करने के लिए संभव नहीं है। SIGAR के लोग भी जेएनआई रैपर और देशी सिस्टम कॉल का उपयोग करते हैं ...

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