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




jvm (2)

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

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

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

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

  4. क्या ऐसी कोई प्रक्रिया है जो JVM उदाहरणों की संख्या को प्रबंधित करती है या क्या यह स्वयं ओएस द्वारा प्रबंधित की जाती है?

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


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

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

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

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

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

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

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

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

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

4) क्या ऐसी कोई प्रक्रिया है जो जेवीएम उदाहरणों की संख्या को प्रबंधित करती है या क्या यह ओएस द्वारा ही प्रबंधित की जाती है?

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

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

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


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

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

आपने समझाया नहीं कि आपको कई जेवीएम उदाहरण क्यों चाहिए। शायद, एक उदाहरण बेहतर काम करेगा।







jvm