2012-08-24 8 views
8

मेरा प्रश्न शीर्षक के रूप में है, और मैं खोज से कुछ ज्ञान प्राप्त किया:JVM निर्दिष्ट -XMS से कम स्मृति का उपभोग क्यों करता है?

  1. linux साझा किया है स्मृति How to measure actual memory usage of an application or process?

  2. JVM XMS में What does the -Xms JVM mean in reference to heap memory?

  3. setted स्मृति की मात्रा को आरक्षित होगा

लेकिन फिर भी पता नहीं क्यों, पर कुछ कुछ मदद की पेशकश कर सकते हैं?

यहाँ Ubuntu12.04 (64 बिट) पर अपने परीक्षण रन है | जेडीके 1.7.0_04। और शीर्ष नीचे पता चलता है:

PID USER  PR NI VIRT RES  SHR S %CPU %MEM TIME+ COMMAND 
4067 brian  20 0 5316m **262m** 7496 S 0 3.3 0:00.30 java -**Xms4096m** -Xmx4096m Test 
4066 brian  20 0 3182m **256m** 7496 S 0 3.3 0:00.30 java -**Xms2048m** -Xmx2048m Test 
4065 brian  20 0 2114m **252m** 7492 S 0 3.2 0:00.30 java -**Xms1024m** -Xmx1024m Test 
4064 brian  20 0 1314m **76m** 7584 S 0 1.0 0:00.20 java -**Xms256m** -Xmx256m Test 
4063 brian  20 0 1180m **51m** 7608 S 0 0.7 0:00.21 java -**Xms128m** -Xmx128m Test 

उत्तर

5

आप निवासी स्मृति पर देख रहे हैं - जो है, शारीरिक रैम का सेवन किया। अधिक जानकारी के लिए here देखें।

वर्चुअल मेमोरी, हालांकि, स्मृति को स्वैप आउट (डिस्क में) सहित आपके एप्लिकेशन द्वारा उपभोग की गई स्मृति है। आप देखेंगे कि वर्चुअल मेमोरी और आपकी -Xms सेटिंग्स के साथ एक करीबी पत्राचार है।

अधिक जानकारी के लिए this ServerFault answer देखें।

+0

बस के बारे में पूछने के लिए "क्यों स्वैप इस्तेमाल किया यहाँ तक कि जब मेरी स्मृति प्रचुर मात्रा में हैं।" और आपके द्वारा संलग्न यूआरएल से जवाब मिला ... धन्यवाद! –

+0

तो आरईएस मेमोरी xms कब बढ़ेगी? मेरे पास एक प्रगति है जो xms और xmx = 6g है, और बूटस्ट्रैप के बाद, आरईएस 4 जी है, एक दिन के बाद, यह 5.9 जी है, लेकिन जब मैं ढेर को डंप करता हूं, तो यह केवल 3.9 जी है। तो क्या जेवीएम तब तक स्मृति का उपभोग करेगा जब तक कि इसकी आवश्यकता नहीं होती है, भले ही स्मृति में उपयोग की गई वस्तुओं को इतना ज़रूरी नहीं है? – Jaskey

3

जब आपके JVM यह स्टार्टअप पर आभासी स्मृति में से एक निरंतर ब्लॉक के रूप में अपनी अधिकतम ढेर आकार सुरक्षित रखता है शुरू होता है। हालांकि, केवल पृष्ठों वास्तव में बन निवासी पृष्ठों (वास्तविक मुख्य स्मृति)

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

+0

तो क्या आपका मतलब यह है कि, यदि मैं xms = xmx = 6g सेट करता हूं, तो अधिकांश समय जीसी ट्रिगर नहीं होता है, यहां तक ​​कि मेरे पास केवल 4 जी पहुंच योग्य वस्तुएं हैं? – Jaskey

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