हॉटस्पॉट JVM ध्वज क्या करता -XX:+UseCompressedOops
है और मुझे इसका उपयोग कब करना चाहिए? 64-बिट जावा उदाहरण (इसका उपयोग नहीं कर रहा है) पर इसका उपयोग करते समय मैं किस प्रकार का प्रदर्शन और मेमोरी-उपयोग अंतर देखूंगा?
हॉटस्पॉट JVM ध्वज क्या करता -XX:+UseCompressedOops
है और मुझे इसका उपयोग कब करना चाहिए? 64-बिट जावा उदाहरण (इसका उपयोग नहीं कर रहा है) पर इसका उपयोग करते समय मैं किस प्रकार का प्रदर्शन और मेमोरी-उपयोग अंतर देखूंगा?
जवाबों:
पिछले वर्ष के अधिकांश हॉटस्पॉट JVM ने इसे डिफ़ॉल्ट रूप से लिया है। यह विकल्प 64-बिट जेवीएम में 32-बिट और 32 जीबी के ढेर के करीब पहुंच का संदर्भ देता है। (32-बिट से अधिक पॉइंटर्स कर सकते हैं) (आप असीमित ऑफ हीप मेमोरी के पास भी हो सकते हैं)। यह स्मृति की एक महत्वपूर्ण राशि को बचा सकता है और संभावित रूप से प्रदर्शन में सुधार कर सकता है।
यदि आप इस विकल्प का उपयोग करना चाहते हैं, तो मैं आपको एक ऐसे संस्करण के लिए अपडेट करने का सुझाव देता हूं, जिस पर यह डिफ़ॉल्ट रूप से है क्योंकि हो सकता है कि कोई अच्छा कारण हो, जैसे बग, क्यों यह पहले सक्षम नहीं था। जावा 6 अपडेट 23 या जावा 7 अपडेट 5 का प्रयास करें।
संक्षेप में, इसे चालू न करें, एक ऐसे संस्करण का उपयोग करें जिसके पास डिफ़ॉल्ट रूप से है।
अपडेट करें:
जावा 8 में आपके पास सेट करने का विकल्प है -XX:ObjectAlignmentInBytes=
और वास्तव में यदि आप आकार को 64 जीबी तक बढ़ाते हैं तो यह -XX:ObjectAlignmentInBytes=16
32-बिट संदर्भ का उपयोग करेगा और फिर भी उपयोग करेगा ।
JE cache
इसका उपयोग कर रहे हैं तो @vanval की सिफारिश की जाती है क्योंकि यह काम नहीं कर सकता है कि आप किसी कारण से संपीड़ित का उपयोग कर रहे हैं या नहीं। मैं कुछ तरीकों के बारे में सोच सकता हूं जो आपको यह btw बता सकते हैं। आपको कमांड लाइन IMHO पर इसे निर्दिष्ट करने की आवश्यकता नहीं है जब तक कि आप जेवीएम को विफल नहीं करना चाहते हैं यदि यह सक्षम नहीं है। उदाहरण के लिए, आपके पास जावा 8.