2010-06-17 11 views
7

मैं एक जेएसपी आधारित अनुप्रयोग को बनाए रखने का प्रभारी हूं, आईबीएम वेबस्पियर 6.1 (आईबीएम जे 9 जेवीएम) पर चल रहा हूं। सभी जेएसपी पृष्ठों में एक स्थिर संदर्भ शामिल है और इसमें फ़ाइल शामिल है कुछ स्थैतिक जावा विधियों की घोषणा की गई है। वे सभी जेएसपी पृष्ठों में उन उपयोगिता स्थैतिक तरीकों के लिए "आसान पहुंच" प्रदान करने के लिए शामिल हैं। मुझे पता है कि यह काम करने का एक बहुत बुरा तरीका है, और मैं इसे बदलने के लिए काम कर रहा हूं। लेकिन, केवल जिज्ञासा के लिए, और इसे बदलने में मेरे प्रयास का समर्थन करने के लिए, मैं सोच रहा हूं कि जेवीएम जेआईटी कंपाइलर द्वारा इन "डुप्लीकेट" स्थिर विधियों को कैसे अनुकूलित किया जाता है।जेवीएम जेआईटी कंपाइलर द्वारा जावा कोड को "डुप्लिकेट" अनुकूलित किया गया है?

  • वे सटीक समान हस्ताक्षर भी अलग-अलग अनुकूलित किए गए हैं?
  • क्या जेवीएम जेआईटी कंपाइलर "देखता है" कि ये विधियां सभी समान हैं जो एक "एकीकृत" JIT'ed कोड प्रदान करती है?
+0

क्या आप मेरे दिमाग को ताज़ा कर सकते हैं और मुझे बता सकते हैं कि 'स्थिर शामिल' के लिए वाक्यविन्यास क्या है? – OscarRyz

+1

इसमें एक जेएसपी निर्देश (<% @ पृष्ठ शामिल हैं = "includeFile.inc"%> का उपयोग करना शामिल है)। "IncludeFile.inc" की सामग्री संकलित समय पर जेएसपी कोड में स्थिर रूप से शामिल है। एक गतिशील शामिल एक जेएसपी टैग () का उपयोग करके किया जा सकता है जहां आप एक यूआरएल का संदर्भ दे सकते हैं और सामग्री रनटाइम पर शामिल है। टैग का उपयोग करके आप एक स्थिर शामिल करने का भी चयन कर सकते हैं। समर्थन के लिए –

+0

+1। मैं बिल्कुल ठीक हूं जहां आप अभी हैं। एकमात्र अंतर, जिस परियोजना को मैंने विरासत में मिला है वह यह था कि इन 'स्थैतिक' विधियों को हर जेएसपी पृष्ठ में काटा और पेस्ट किया गया था। –

उत्तर

11

प्रत्येक जेएसपी पृष्ठ को एक अद्वितीय वर्ग में संकलित किया जाता है, और इसलिए शामिल कोड भी अलग-अलग वर्गों में संकलित किया जाएगा। जेआईटी कोड की विभिन्न प्रतियों को एक में समेकित नहीं करेगा।

इससे बचने के लिए, आप आयातित कोड को वास्तविक जावा क्लास में डाल सकते हैं, और जेएसपी में आयात कर सकते हैं। तब कोई डुप्लिकेट नहीं होगा, क्योंकि आप एक ही कक्षा का पुन: उपयोग कर रहे हैं।

0

आप एक वर्ग से स्थिर आयात का उपयोग कर सकते हैं: <% @ पृष्ठ आयात = "स्थिर foo। *"%>।

तब आपके पास अब यह सब डुप्लिकेशन नहीं है। और आयात के अलावा आपको कुछ और छूने की आवश्यकता नहीं होगी।

3

@ mdma का उत्तर वर्तमान JVMs के लिए सही है, लेकिन कुछ मामलों में योग्यता प्राप्त करने की आवश्यकता है।

  1. भविष्य JVMs में JITs संभवतः मूल कोड की स्मृति पदचिह्न को कम करने के लिए आक्रामक अनुकूलन का समर्थन कर सकता है।

  2. फ्लिपसाइड यह है कि जब तक आपके पास हजारों अलग-अलग जेएसपी नहीं होते हैं, संभावना है कि प्रति जेएसपी कक्षा के कुछ स्थिर तरीकों के ऊपरी भाग आपके वेबैप की स्मृति पदचिह्न में बहुत अंतर नहीं करेंगे।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^