किसी भी दृष्टिकोण से आपको लगभग समान संख्या मिलनी चाहिए। -X..m
-X..x
सभी पीढ़ियों का उपयोग करके ढेर को आवंटित करना हमेशा एक अच्छा विचार है । आप तब गारंटी दे सकते हैं और यह भी देख सकते हैं कि कौन से पैरामीटर पारित किए गए थे और इसलिए इसका उपयोग किया जा रहा है।
वास्तविक मेमोरी usages के लिए, आप VIRT (आवंटित और साझा किए गए) और RES (वास्तविक उपयोग किए गए) की तुलना मोटे तौर पर jstat मानों से कर सकते हैं:
जावा 8 के लिए, इन मूल्यों के लिए jstat को वास्तव में देखें । मान लें कि आप बिना एमएमएपी या फाइल प्रोसेसिंग के एक साधारण वर्ग चलाते हैं।
$ jstat -gccapacity 32277
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
215040.0 3433472.0 73728.0 512.0 512.0 67072.0 430080.0 6867968.0 392704.0 392704.0 0.0 1083392.0 39680.0 0.0 1048576.0 4864.0 7225 2
$ jstat -gcutil 32277
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
6.25 0.00 7.96 18.21 98.01 95.29 7228 30.859 2 0.173 31.032
अधिकतम :
NGCMX + S0C + S1C + EC + OGCMX + MCMX + CCSMX
3433472 + 512 + 512 + 67072 + 6867968 + 1083392 + 1048576 = 12 GB
(VIRT मेमोरी के लगभग और नीचे)
अधिकतम (न्यूनतम, प्रयुक्त):
215040 + 512 + 512 + 67072 + 430080 + 39680 + 4864 = ~ 1GB
(लगभग RES मेमोरी के करीब)
"इस पर मुझे उद्धृत न करें" लेकिन वीआईआरटी मेम लगभग मैक्स मेमोरी से अधिक या करीब आवंटित है लेकिन जब तक उपयोग की जा रही मेमोरी भौतिक मेमोरी में मुफ्त / उपलब्ध है, जेवीएम मेमोरी अपवाद नहीं फेंकती है। वास्तव में, अधिकतम मेमोरी को जेवीएम स्टार्टअप पर भौतिक मेमोरी के खिलाफ भी नहीं देखा जाता है, यहां तक कि ओएस पर स्वैप बंद करने के लिए भी। एक जावा प्रक्रिया द्वारा वास्तव में उपयोग की जाने वाली वर्चुअल मेमोरी की बेहतर व्याख्या यहां पर चर्चा की गई है ।
jstat
जेवीएम के समग्र स्मृति उपयोग को सत्यापित करने के लिए कौन से विकल्प का उपयोग करना चाहिए? चलो तुम्हारे साथ JVM शुरू कहते हैंXms=4g
औरXmx=4g
और आप को देखने के लिए, कितना है कि की स्मृति को पहले से ही प्रयोग किया जाता है करना चाहते हैं?