डुप्लिकेटेड जावा रनटाइम विकल्प: वरीयता क्रम क्या है?


82

निम्नलिखित कमांड लाइन को ध्यान में रखते हुए

java -Xms128m -Xms256m myapp.jar

जेवीएम न्यूनतम मेमोरी ( Xmsविकल्प): 128 मीटर या 256 मीटर के लिए कौन सी सेटिंग्स लागू होगी ?


17
प्रश्न में कोई टाइपो नहीं। Xms विकल्प का उपयोग दो बार उद्देश्य के लिए किया जाता है। यह प्रश्न का पदार्थ है
fabien7474

जवाबों:


28

जेवीएम पर निर्भर करता है, शायद संस्करण ... शायद उस समय आपके डेस्क पर कितने पेपर क्लिप हैं। यह भी काम नहीं कर सकता है। ऐसा मत करो।

यदि यह किसी कारण से आपके नियंत्रण से बाहर है, तो इसे उसी तरह संकलित करें और चलाएं जिससे आप अपना जार चला सकें। लेकिन चेतावनी दी जाए, विकल्पों के आदेश पर भरोसा करना वास्तव में एक बुरा विचार है।

public class TotalMemory
{
    public static void main(String[] args)
    {
         System.out.println("Total Memory: "+Runtime.getRuntime().totalMemory());
         System.out.println("Free Memory: "+Runtime.getRuntime().freeMemory());
    }
}

2
+1 - बेहतर उन पेपरक्लिप्स को गिनें :-)। गंभीरता से, उन अस्पष्ट तर्कों को पारित करने के लिए रॉकेट विज्ञान को बदलना नहीं है।
स्टीफन सी

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

65

हमेशा की तरह, अपने स्थानीय जेवीएम के विशिष्ट कार्यान्वयन की जांच करें लेकिन यहां कमांड लाइन से कोड के बिना जांच करने का एक त्वरित तरीका है।

> java -version; java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
uintx MaxHeapSize         := 2147483648        {product}

तो आप इस मामले में देखेंगे, तर्क का दूसरा उदाहरण (2 जी) वह है जो पूर्ववर्तीता लेता है (कम से कम 1.8 में) और यही मेरा अनुभव अधिकांश अन्य आधुनिक संस्करणों के साथ भी रहा है।


8
java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize, इस तरह से कटौती करना आसान है।
रेनस

40

IBM JVM विजेता के रूप में किसी तर्क का सबसे सही उदाहरण मानता है। मैं हॉटस्पॉट, आदि से बात नहीं कर सकता।

हम ऐसा करते हैं क्योंकि अक्सर बैच फ़ाइलों से गहरी नेस्टेड कमांड लाइनें होती हैं जहां लोग केवल अंत तक जोड़ सकते हैं, और उस विजेता को बनाना चाहते हैं।


21
+1 वास्तव में pontificating के बजाय सवाल का जवाब देने के लिए।
जिमएन



9

मुझे यकीन है कि यह दूसरा है। तर्क आमतौर पर आदेश में संसाधित होते हैं:

for( int i=0; i<argc; i++ ) {
  process_argument(argv[i]);
}

लेकिन अगर मैं जावा तर्क पार्सर लिख रहा था, तो मैं परस्पर विरोधी तर्कों पर शिकायत करूंगा।


8

जेवीएम न्यूनतम मेमोरी के लिए कौन सी सेटिंग्स लागू होगी?

नीचे सूचीबद्ध जावा के विभिन्न संस्करणों में, "विजेता" तर्क सूची में सबसे सही मूल्य है। जैसा कि अन्य लोगों ने बताया है, इस पर भरोसा करना एक अच्छा विचार नहीं है, लेकिन शायद यह फिर भी साझा करने के लिए उपयोगी जानकारी है।

जावा 1.8.0_172

~ $ java8
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
~ $ java -Xmx1024m -Xmx4024m -XX:+PrintFlagsFinal Test 2>/dev/null | grep MaxHeapSize
    uintx MaxHeapSize                              := 4219469824                          {product}

जावा 11.0.3

~ $ java11
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)
~ $ java -Xmx1024m -Xmx4024m -XX:+PrintFlagsFinal Test 2>/dev/null | grep MaxHeapSize
   size_t MaxHeapSize                              = 4219469824                                {product} {command line}

OpenJDK 12.0.1

~ $ java12
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
~ $ java -Xmx1024m -Xmx4024m -XX:+PrintFlagsFinal Test 2>/dev/null | grep MaxHeapSize
   size_t MaxHeapSize                              = 4219469824                                {product} {command line}

AdoptOpenJDK 12.0.1

~ $ java12a
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 12.0.1+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12.0.1+12, mixed mode, sharing)
~ $ java -Xmx1024m -Xmx4024m -XX:+PrintFlagsFinal Test 2>/dev/null | grep MaxHeapSize
   size_t MaxHeapSize                              = 4219469824                                {product} {command line}

OpenJDK 13-ea

~ $ java13
openjdk version "13-ea" 2019-09-17
OpenJDK Runtime Environment (build 13-ea+22)
OpenJDK 64-Bit Server VM (build 13-ea+22, mixed mode, sharing)
~ $ java -Xmx1024m -Xmx4024m -XX:+PrintFlagsFinal Test 2>/dev/null | grep MaxHeapSize
   size_t MaxHeapSize                              = 4219469824                                {product} {command line}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.