/ / क्या JVM में मशीन के विशिष्ट अनुकूलन झंडे हैं? - जावा, जेवीएम, कोड-पीढ़ी

क्या JVM में मशीन विशिष्ट अनुकूलन झंडे हैं? - जावा, जेवीएम, कोड पीढ़ी

मैं समझता हूं कि एक जेवीएम व्याख्या करता है / जेआईटीbytecodes; और जेवीएम वर्तमान संदर्भ में कार्यक्रम को चलाने के लिए मंच विशिष्ट मशीन कोड जनरेशन कार्यक्षमता (और रनटाइम) प्रदान करता है।

मैं यह समझना चाहूंगा कि जेवीएम में कौन से प्लेटफ़ॉर्म विशिष्ट कोड जनरेशन ट्यूनिंग विकल्प उपलब्ध हैं। मैं प्रवेश कर गया https://docs.oracle.com/cd/E21764_01/web.1111/e13814/jvm_tuning.htm#PERFM167, जो वास्तव में JVM रनटाइम को ट्यून करने के लिए केवल झंडे हैं।

मुझे यह जानने में दिलचस्पी है कि क्या जेवीएम एक विशिष्ट मंच के लिए कोड पीढ़ी के लिए ट्यूनिंग विकल्पों की अनुमति देता है, जैसे कि x86 पर जीसीसी https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html#x86-Options.

उत्तर:

उत्तर № 1 के लिए 1

सबसे पहले, जेवीएम झंडे मौलिक रूप से हैंजीसीसी के अनुकूलन झंडे के लिए अलग। जीसीसी झंडे संकलन समय पर उत्पन्न कोड को प्रभावित करते हैं। जेवीएम विकल्प (इस हद तक कि वे जेआईटी संकलन को प्रभावित करते हैं) बाईटकोड को प्रभावित नहीं करते।

विभिन्न झंडे हैं जो जेआईटी संकलक द्वारा उत्सर्जित मूल कोड को प्रभावित करते हैं; उदाहरण के लिए:

  • The -ea विकल्प निर्धारित करते है कि कथनों की जांच की जाए ।
  • The -server जब कोड JIT कंपाइलर जो इसके ऑप्टिमाइज़ेशन को प्रभावित करता है (भाग में) विकल्प नियंत्रण ।को -Xcomp विकल्प भी वही करता है ।
  • The -Xint तथा -Xmixed प्रभावित है कि क्या कोड JIT संकलित है ।

तो फिर वहां विकल्प है कि विशेष रूप से विशिष्ट अनुकूलन परिवर्तन से संबंधित बातें कर रहे हैं ।इनमें -XX:ObjectAlignmentInBytes, -XX:CompressedOops, -XX:AggressiveOpts, द -XX:AllocatePrefetch विकल्प, -XX:DoEscapeAnalysis, द -XX:Inline विकल्प, -XX:OptimizeStringConcat, द -XX:UseAES विकल्प और -XX:UseSHA विकल्प।

एक अधिक पूर्ण लिस्टिंग के लिए, Oracle प्रलेखन को देखें अपने मंच के लिए.

ध्यान दें कि:

  • सभी JIT कोड ऑप्टिमाइज़ेशन प्लेटफ़ॉर्म विशिष्ट अर्थ है कि JIT कंपाइलर जो आप वास्तव में चल रहे हार्डवेयर के लिए optimzes है ।
  • इसके बाद के संस्करण विकल्पों में से कुछ है मंच विशिष्ट (देखें प्रलेखन)
  • The -X तथा -XX विकल्प जावा संस्करणों के बीच बदल सकते हैं ।
  • जावा प्रोग्रामर आमतौर पर मंच अनुकूलन सेटिंग्स का चयन करें ।के विपरीत (कहते हैं) सी या सी , जावा प्रोग्राम आमतौर पर कम अनुकूलन सेटिंग्स के प्रति संवेदनशील है1.

1-किसी एकल-थ्रेडेड जावा कोड के लिए, ऑप्टिमाइज़ेशन सेटिंग्स किसी प्रोग्राम के व्यवहार को परिवर्तित नहीं करना चाहिए ।एक बहु-थ्रेड वाले कोड के लिए, एक के व्यवहार ग़लत आवेदन के कारण बदल सकता है अपर्याप्त सिंक्रनाइज़ेशन.