मैंने पहले से ही -XX:+PrintCompilation
के साथ काम किया है, और मैं जेआईटी-कंपाइलर की मूल तकनीक जानता हूं और जेआईटी-संकलन का उपयोग क्यों किया जाता है।जेवीएम ने एक विधि को जेआईटी-संकलित करने का निर्णय कैसे लिया है (एक विधि को "गर्म" के रूप में वर्गीकृत करें)?
फिर भी मुझे यह पता नहीं चला है कि JVM एक विधि को जेआईटी-संकलित करने का निर्णय लेता है, यानी "जब सही समय एक विधि को जेआईटी-संकलित करता है"।
क्या मैं इस धारणा में सही हूं कि प्रत्येक विधि का अर्थ शुरू होता है, और जब तक इसे "हॉट विधि" के रूप में वर्गीकृत नहीं किया जाता है, तब तक इसे संकलित नहीं किया जाएगा? मेरे पास मेरे सिर के पीछे कुछ है जो मैंने पढ़ा है कि इसे विधि "गर्म" माना जाता है जब इसे कम से कम 10.000 बार निष्पादित किया गया था (विधि 10.000 बार व्याख्या करने के बाद, इसे संकलित किया जाएगा), लेकिन मुझे यह मानना है कि मैं हूं इस बारे में निश्चित नहीं है या जहां मैंने इसे पढ़ा है।
तो मेरे सवाल का योग करने के लिए:
(1) है हर विधि जब तक यह 'हॉट' विधि के रूप में वर्गीकृत नहीं किया गया है (और इसलिए संकलित किया गया है) में व्याख्या या वहाँ तरीकों के लिए कारण हैं संकलित करने के लिए भले ही वे "गर्म" न हों?
(2) JVM कैसे "गैर-गर्म" और "गर्म" विधियों में विधियों को वर्गीकृत करता है? निष्पादन की संख्या? और कुछ?
(3) यदि "हॉट" विधियों के लिए कुछ थ्रेसहोल्ड (जैसे निष्पादन की संख्या) हैं, तो क्या इस थ्रेसहोल्ड को सेट करने के लिए जावा फ्लैग (-XX:...
) हैं?
'की -XX उत्पादन पर एक नज़र डालें: + PrintFlagsFinal', वहाँ और JIT संकलक से संबंधित झंडे के बहुत सारे अपने स्तरों, इनलाइनिंग, विधियों आकार, संकलक धागे आदि हैं – the8472