जब एक ही मशीन पर कई जावा प्रोग्राम चलते हैं


83

प्रत्येक जावा एप्लिकेशन एक विशिष्ट जावा वर्चुअल मशीन इंस्टेंस में चलेगा। मैं वास्तव में नीचे के पहलुओं पर भ्रमित हो रहा हूं और Googling ने मुझे और भी अधिक भ्रमित कर दिया है। विभिन्न साइटों पर विभिन्न लेख।

  1. यदि मेरे पास जावा में एक वेब सेवा है, तो इसे चलाने के लिए एक जेवीएम उदाहरण की आवश्यकता होगी। क्या जेवीएम को एक डेमन प्रक्रिया बनाया जा सकता है?

  2. यदि हां, जब हम कोई अन्य जावा एप्लिकेशन चलाते हैं तो यह JVM के इस उदाहरण का उपयोग करेगा या एक नया निर्माण करेगा?

  3. किसी भी मशीन में उपलब्ध मुख्य मेमोरी स्थिर है। जब हम बिना किसी आरंभिक ढेर के आकार प्रदान किए बिना एक साथ n java प्रक्रिया शुरू करते हैं, तो कैसे ढेर का आकार प्रक्रियाओं के बीच वितरित किया जाता है?

  4. क्या ऐसी कोई प्रक्रिया है जो JVM इंस्टेंस की n संख्या का प्रबंधन करती है या यह OS द्वारा ही प्रबंधित की जाती है?

  5. जब जीसी के दौरान स्टॉप-द-वर्ल्ड होता है तो अन्य जेवीएम इंस्टेंसेस (विभिन्न धागे जो मुझे लगता है) प्रभावित होते हैं?


2
आपका पहला बिंदु कंटेनर के कार्यान्वयन पर निर्भर करता है ...
MadProgrammer

6
विस्तृत विवरण के लिए +1 करें और पूछने से पहले प्रश्न पर शोध करें।
आमोद

जवाबों:


80

1) अगर मेरे पास जावा में एक वेब सेवा है, तो इसे चलाने के लिए एक जेवीएम उदाहरण की आवश्यकता होगी। तो क्या जेवीएम को डेमॉन प्रक्रिया बनाया जा सकता है?

हाँ यह कर सकते हैं। यह कैसे किया जाता है यह ओ / एस और वेब सर्वर कंटेनर पर ही निर्भर करता है।

2) यदि हाँ जब हम किसी अन्य जावा एप्लिकेशन को चलाते हैं तो यह JVM के इस उदाहरण का उपयोग करेगा या एक नया निर्माण करेगा?

प्रत्येक जावा एप्लिकेशन एक स्वतंत्र JVM का उपयोग करता है।

प्रत्येक JVM एक अलग प्रक्रिया है, और इसका मतलब है कि ढेर, ढेर, वगैरह का कोई बंटवारा नहीं है। (आम तौर पर, केवल साझा की जाने वाली चीजें केवल पढ़ने वाले खंड होते हैं जो कोर जेवीएम और देशी पुस्तकालयों के कोड को धारण करते हैं ... उसी तरह कि सामान्य प्रक्रियाएं कोड खंड साझा कर सकती हैं।)

3) किसी भी मशीन में उपलब्ध मुख्य मेमोरी स्थिर है। जब हम बिना किसी आरंभिक ढेर के आकार प्रदान किए बिना एक साथ n java प्रक्रिया शुरू करते हैं, तो कैसे ढेर का आकार प्रक्रियाओं के बीच वितरित किया जाता है?

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

संदर्भ: https://stackoverflow.com/a/4667635/139985

व्यवहार में, आप ढेर के आकार को सीधे निर्दिष्ट करने से बेहतर होंगे।

4) क्या ऐसी कोई प्रक्रिया है जो JVM इंस्टेंस की n संख्या का प्रबंधन करती है या यह OS द्वारा ही प्रबंधित की जाती है?

न तो। जेवीएम उदाहरणों की संख्या विभिन्न चीजों के कार्यों से निर्धारित होती है जो प्रक्रिया शुरू कर सकती हैं; जैसे डेमॉन स्क्रिप्ट, कमांड स्क्रिप्ट, कमांड लाइन पर कमांड टाइप करने वाले उपयोगकर्ता, वगैरह। अंततः, ओएस संसाधनों से बाहर चलने पर किसी भी अधिक प्रक्रिया को शुरू करने से इंकार कर सकता है, लेकिन JVM को अन्य प्रक्रियाओं से अलग नहीं माना जाता है।

5) जब जीसी के दौरान स्टॉप-द-वर्ल्ड होता है तो अन्य JVM इंस्टेंसेस (मेरे द्वारा ग्रहण किए गए विभिन्न धागे) प्रभावित होते हैं?

नहीं। JVM स्वतंत्र प्रक्रियाएं हैं। वे किसी भी परिवर्तनशील स्थिति को साझा नहीं करते हैं। कचरा संग्रह प्रत्येक JVM पर स्वतंत्र रूप से काम करता है।


10
  1. देखें कि जावा प्रोग्राम कैसे करें?
  2. जेवीएम का नया उदाहरण बनाया जाएगा
  3. उसी तरह जैसे स्मृति अन्य सभी प्रक्रियाओं के बीच साझा की जाती है
  4. यह O / S द्वारा प्रबंधित किया जाता है
  5. अन्य उदाहरण प्रभावित नहीं होते हैं

यदि आपके उदाहरणों को अपने काम का समन्वय करना है, तो आप एकल मुख्य उदाहरण बना सकते हैं जो अन्य उदाहरणों को चालू / बंद करेगा।

आपने यह नहीं बताया कि आपको कई JVM उदाहरणों की आवश्यकता क्यों है। शायद, एकल उदाहरण बेहतर काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.