2011-03-03 19 views
5

हम जावा द्वारा लिखे गए एक स्विंग एप्लिकेशन को विकसित कर रहे हैं जिसके लिए केवल 128 एमबी मेमोरी की आवश्यकता है, और कम भविष्य में मुझे नहीं लगता कि इसे 4 जीबी की तरह अधिक मेमोरी की आवश्यकता होगी। पहले हम हमेशा 3 अलग-अलग रिलीज प्रदान करते हैं, एक 32-बिट विंडोज़ के लिए, एक 32-बिट लिनक्स के लिए और दूसरा 64-बिट लिनक्स के लिए, जिसमें एक इंस्टॉलर है जिसमें जेआरई शामिल है। 64-बिट संस्करण का उपयोग कुछ हफ्ते पहले तक किसी भी व्यक्ति द्वारा नहीं किया गया था, और आउटऑफमेमरी अपवाद की सूचना दी गई थी क्योंकि एप्लिकेशन 32-बिट संस्करण की तुलना में 40-50% अधिक स्मृति का उपभोग करता है।32-बिट या 64-बिट एप्लिकेशन?

मेरा सवाल यह है कि क्या 64 बिट बिट लिनक्स के लिए 64-बिट संस्करण प्रदान करने के लिए यह आवश्यक है कि एप्लिकेशन को 4 जीबी से अधिक स्मृति का उपयोग करने की आवश्यकता न हो? हमारे पास कुछ त्वरित परीक्षण था, जिसमें पता चला कि 32-बिट संस्करण 64-बिट लिनक्स पर भी काम करता है। लेकिन मुझे यकीन नहीं है कि हमारे पास क्या विपक्ष हो सकता है, उदाहरण के लिए प्रदर्शन और/या संगतता मुद्दा?

+0

मुझे इसे थोड़ा सा स्पष्ट करने दें: 32 बिट संस्करण का उपयोग कर रहा है 64 एमबी संस्करण के लिए अधिकतम मेमोरी के रूप में 128 एमबी, इसे 1 9 2 एमबी की आवश्यकता हो सकती है, इसलिए हमें न केवल अतिरिक्त 64 बिट इंस्टॉलर बनाना है, बल्कि हमें अलग-अलग विन्यास भी बनाना है, जो पूरी चीज को और अधिक जटिल बनाता है। और यदि हम सभी संस्करणों के लिए 1 9 2 एमबी का उपयोग करते हैं तो यह स्मृति लीक को हमारे लिए इतना दृश्यमान नहीं बना सकता है क्योंकि 32-बिट संस्करण का अब तक उपयोग किया जाता है। एक और बात यह है कि उस सर्वर पर कई एप्लिकेशन चल सकते हैं ताकि हम मेमोरी खपत को जितना संभव हो उतना कम करना चाहें। –

+0

यदि आप 64-बिट JVM में 32-बिट संदर्भों का उपयोग करते हैं तो इसे अधिक मेमोरी की आवश्यकता नहीं होगी। –

उत्तर

3

यदि आपका एप्लिकेशन 64-बिट होस्ट ऑपरेटिंग सिस्टम के लिए कोई सुधार प्रदान नहीं करता है और आपके 32-बिट रिलीज़ के साथ संगत है तो मुझे इसे प्रदान करने की तत्काल आवश्यकता नहीं दिखाई देती है।

हालांकि, अधिकांश, यदि सभी नई प्रणाली x64 आर्किटेक्चर पर आधारित नहीं हैं, जहां मैं वकालत करता हूं कि 64-बिट सॉफ़्टवेयर प्राकृतिक डिफ़ॉल्ट होना चाहिए। यह हार्डवेयर स्तर पर जितना करीब आता है उतना मजबूत हो जाता है। मैं आपको यह नहीं बता सकता कि वर्चुअल ऑपरेटिंग को केवल 32-बिट वीपीएन क्लाइंट का समर्थन करने के लिए कितना अजीब है।

64-बिट क्लाइंट को बढ़ावा देना शायद आपके डाउनलोड आंकड़ों को प्रभावित करेगा यदि आप इसे पसंदीदा विकल्प चुनने का निर्णय लेते हैं।

2

अधिकांश 32-बिट JVMs आसपास 1.2-1.5 जीबी तक सीमित हैं।

यदि आपको लगता है कि आपका एप्लिकेशन 64-बिट जेवीएम के साथ अधिक मेमोरी का उपयोग करता है, तो -XX:+UseCompressedOops आज़माएं जो 64-बिट जेवीएम को 32-बिट संदर्भों का उपयोग करने के लिए बताता है लेकिन अभी भी 32 जीबी मेमोरी तक पहुंच सकता है।

1

मेरा सवाल यह है कि क्या 64 बिट बिट लिनक्स के लिए 64-बिट संस्करण प्रदान करने के लिए यह आवश्यक है कि एप्लिकेशन को 4 जीबी से अधिक स्मृति का उपयोग करने की आवश्यकता नहीं होगी?

यदि एप्लिकेशन को कभी भी उस स्मृति की आवश्यकता नहीं होगी, 64 बिट इंस्टॉलर/JVM कोई मूल्य नहीं जोड़ता है। इसके विपरीत, यह एक खराब विकल्प है क्योंकि (जैसा कि आपने देखा) यह केवल अधिक स्मृति का उपयोग करता है और (संभवतः) परिणामस्वरूप धीमा चलता है।

(वास्तव में, वास्तविक सीमा 4GB की तुलना में कम हो जाएगा। 32-बिट पता स्थान के कुछ भागों हार्डवेयर वास्तुकला समस्याओं के कारण, व्यर्थ हो जाएगा।)

मैं सुझाव है कि आप 64 बिट संस्करण को वापस लेने, लेकिन उपयोगकर्ता को एक जेवीएम का उपयोग करने की क्षमता प्रदान करें जिसे उन्होंने अलग से डाउनलोड और स्थापित किया है। (दरअसल, आपको शायद बाद वाले को भी करना चाहिए। जेआरई की एंबेडेड प्रतियां नवीनतम जेवीएम सुरक्षा फिक्स प्राप्त करने के लिए अपग्रेड करते समय अनदेखा होती हैं ...)

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