मैं JVM bytecode instructions देख रहा था और यह देखकर आश्चर्यचकित हुआ कि कक्षाओं (जैसे कास्टिंग, new
इत्यादि) के बीच सभी इंटरैक्शन अन्य कक्षाओं की पहचान के लिए निरंतर पूल लुकअप पर भरोसा करते हैं।कक्षा-वर्ग इंटरैक्शन पर जेवीएम बाइटकोड सीमाएं
क्या मैं यह कहने में सही हूं कि इसका मतलब है कि एक वर्ग 64k से अधिक लोगों के अस्तित्व के बारे में नहीं जान सकता है, क्योंकि उन्हें संदर्भित करना असंभव है? अगर किसी को उन लोगों को संदर्भित करने की आवश्यकता होती है, तो किसी को क्या करना चाहिए - कई वर्गों में काम का प्रतिनिधित्व करें जिनमें से प्रत्येक का अपना < 64k इंटरैक्शन हो सकता है?
(मुझे यह रूचि का कारण यह है कि मेरे पास कोड जेनरेटर लिखने की आदत है, कभी-कभी हजारों विशिष्ट वर्गों का उत्पादन होता है, और कुछ भाषाओं (जैसे स्कैला) कक्षाएं बढ़ती हैं। इसलिए ऐसा लगता है कि अगर मुझे सच होना है सावधान:। (अलग) वर्गों में से प्रत्येक के सैकड़ों का उपयोग कर अगर मैं एक कक्षा में तरीकों के सैकड़ों है, मैं लगातार पूल अंतरिक्ष पार कर सकते हैं)
यदि आपके पास छोटे वैक्टर और मैट्रिस पर विभिन्न विशेष आदिम परिचालनों की गणना करने के लिए कक्षाओं की हास्यास्पद संख्या है (जहां कक्षाएं विभिन्न तत्वों को रखने के लिए विभिन्न प्राइमेटिव्स का उपयोग करने के लिए समान बचत होती हैं), और एक आयोजक वर्ग बनाने की कोशिश करें जो ले जाएगा ऑब्जेक्ट एरे और विशेष कक्षाओं के उस जंगल का उपयोग करके प्रसंस्करण के लिए उन्हें डिबॉक्स करें, आप सीमा के करीब खतरनाक हो सकते हैं। मुझे लगता है कि बड़ा जवाब अभी भी "ऐसा नहीं करता है" क्योंकि मुझे उन पर गणित करने के बाद बाइट्स को बाइट्स में भरने में बहुत सारी परेशानी होती है। लेकिन मैंने कभी कल्पना नहीं की कि मैं जेवीएम तोड़ दूंगा। –
यदि आप प्रदर्शन कारणों से विशेष कोड उत्पन्न कर रहे हैं, और आप हजारों कक्षाएं बनाते हैं, तो आप अपने दृष्टिकोण पर पुनर्विचार करना चाहेंगे।आप कक्षा लोडिंग, सत्यापन, जेआईटी इत्यादि के लिए बहुत अधिक अतिरिक्त ओवरहेड खर्च कर देंगे। –
और यह एक वर्ग में हजारों विधियों को उत्पन्न करने के लिए लागू होता है। लेकिन किसी भी तरह से, यहां सभी प्रकार के "समयपूर्व अनुकूलन" मुद्दे हैं; जैसे विभिन्न आदिम प्रकारों के लिए विभिन्न संस्करणों को उत्पन्न/उपयोग करने का निर्णय। क्या यह वास्तव में परेशानी के लायक होने के लिए पर्याप्त अंतर लाने जा रहा है? और क्या आपको वास्तव में इन चीजों में से कई उत्पन्न करने की आवश्यकता होगी? –