जैसा कि आपने देखा है (जेआईटी नहीं चल रहा है) के रूप में जेआईटी के विभिन्न स्तर हैं।
जावा के पुराने संस्करणों में, आप (जैसे -Xint
, -client
, -server
) बस दुभाषिया के साथ, चलाने के लिए पहली बार में उनका चयन करने के लिए इस्तेमाल किया सिर्फ ग्राहक (C1) संकलक, या बस सर्वर (C2) संकलक के साथ ।
टायर संकलन, जो जावा 7 के साथ आया था, का मतलब है कि हॉटस्पॉट कंपाइलर उन चरणों के बीच सहजता से बदल सकता है। तो क्या होता है कि कुछ निश्चित रनों के बाद, कोड सी 1 के साथ संकलित किया जाएगा, और फिर अधिक रनों के बाद, इसे सी 2 के साथ संकलित किया जाएगा। यह एक विधि-दर-विधि आधार पर है, इसलिए जब कोई ऐप एक महत्वपूर्ण भाग चला रहा है तो केवल दुभाषिया (जो ठंडा कोड के लिए है) के तहत चल रहा है और उसके बाद कोड बहुत (गर्म) चलाया जाता है, तो इसे संकलित किया जाएगा अधिक प्रदर्शनकारी बनें। आप
$ java -XX:+PrintFlagsFinal -version | grep CompileThreshold
intx Tier2CompileThreshold = 0
intx Tier3CompileThreshold = 2000
intx Tier4CompileThreshold = 15000
openjdk version "1.8.0_92"
OpenJDK Runtime Environment (Zulu 8.15.0.1-macosx) (build 1.8.0_92-b15)
OpenJDK 64-Bit Server VM (Zulu 8.15.0.1-macosx) (build 25.92-b15, mixed mode)
चल -XX:-TieredCompilation
अनिवार्य रूप से TieredCompilation=false
जिसका मतलब है कि इस संक्रमण नहीं करते है द्वारा विभिन्न स्तरों को देख सकते हैं, और आप सामने है कि क्लाइंट या सर्वर संकलक उपयोग करने के लिए चयन करने के लिए की है। JVM स्वस्थ रूप से निर्णय लेता है कि आपके सीपीयू के आधार पर कौन सा मोड लागू करना है; यदि आपके पास एकाधिक प्रोसेसर या 64-बिट वीएम हैं तो यह एक सर्वर वीएम (सी 2) का उपयोग करेगा, अन्यथा यह क्लाइंट वीएम (सी 1) का उपयोग करेगा।
तो -Xint
सिर्फ दुभाषिया के साथ चलेंगे (यानी कोई संकलक) और आप या तो केवल C1 या -client
या -server
क्रमशः के साथ सी 2 का चयन कर सकते -XX:-TieredCompilation
धन्यवाद! अब मैं थोड़ा उलझन में हूं, क्योंकि मेरे पास अलग-अलग उत्तर हैं: '-XX: -TieredCompilation'' को सेट करना होगा (1.) सी 1 को अक्षम करें और हमेशा अधिकतम (सी 2) या (2.) को संकलित करें, JVM को हेरिस्टिक रूप से तय करने के लिए नेतृत्व करें कौन सी संकलन सीपीयू के आधार पर अक्षम करने के लिए स्तर (जैसा कि @AlBlue द्वारा बताया गया है)? यह मेरे लिए निर्णय लेने में भी मुश्किल बनाता है, जो सही उत्तर के रूप में स्वीकार करना है: पी –
@ मार्कसवेनिंगर मैंने अलब्लू के जवाब के तहत टिप्पणी की है। यह बहुत सटीक नहीं है। – apangin
धन्यवाद, मैंने अभी इसे देखा है। दूसरी टिप्पणी में आप 'TierXCompileTreshold' और' -XX: CompilationPolicyChoice = 2' का उल्लेख करते हैं, दो नई चीजें जिन्हें मैं अभी भी नहीं जानता, लेकिन मैं उनके बारे में पढ़ूंगा। : पी लेकिन पहली टिप्पणी मेरे प्रश्न को बहुत अच्छी तरह बताती है। –