निम्नलिखित कमांड लाइन को ध्यान में रखते हुए
java -Xms128m -Xms256m myapp.jar
जेवीएम न्यूनतम मेमोरी ( Xms
विकल्प): 128 मीटर या 256 मीटर के लिए कौन सी सेटिंग्स लागू होगी ?
निम्नलिखित कमांड लाइन को ध्यान में रखते हुए
java -Xms128m -Xms256m myapp.jar
जेवीएम न्यूनतम मेमोरी ( Xms
विकल्प): 128 मीटर या 256 मीटर के लिए कौन सी सेटिंग्स लागू होगी ?
जवाबों:
जेवीएम पर निर्भर करता है, शायद संस्करण ... शायद उस समय आपके डेस्क पर कितने पेपर क्लिप हैं। यह भी काम नहीं कर सकता है। ऐसा मत करो।
यदि यह किसी कारण से आपके नियंत्रण से बाहर है, तो इसे उसी तरह संकलित करें और चलाएं जिससे आप अपना जार चला सकें। लेकिन चेतावनी दी जाए, विकल्पों के आदेश पर भरोसा करना वास्तव में एक बुरा विचार है।
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());
}
}
हमेशा की तरह, अपने स्थानीय जेवीएम के विशिष्ट कार्यान्वयन की जांच करें लेकिन यहां कमांड लाइन से कोड के बिना जांच करने का एक त्वरित तरीका है।
> 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 में) और यही मेरा अनुभव अधिकांश अन्य आधुनिक संस्करणों के साथ भी रहा है।
java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize
, इस तरह से कटौती करना आसान है।
IBM JVM विजेता के रूप में किसी तर्क का सबसे सही उदाहरण मानता है। मैं हॉटस्पॉट, आदि से बात नहीं कर सकता।
हम ऐसा करते हैं क्योंकि अक्सर बैच फ़ाइलों से गहरी नेस्टेड कमांड लाइनें होती हैं जहां लोग केवल अंत तक जोड़ सकते हैं, और उस विजेता को बनाना चाहते हैं।
मुझे यकीन है कि यह दूसरा है। तर्क आमतौर पर आदेश में संसाधित होते हैं:
for( int i=0; i<argc; i++ ) {
process_argument(argv[i]);
}
लेकिन अगर मैं जावा तर्क पार्सर लिख रहा था, तो मैं परस्पर विरोधी तर्कों पर शिकायत करूंगा।
जेवीएम न्यूनतम मेमोरी के लिए कौन सी सेटिंग्स लागू होगी?
नीचे सूचीबद्ध जावा के विभिन्न संस्करणों में, "विजेता" तर्क सूची में सबसे सही मूल्य है। जैसा कि अन्य लोगों ने बताया है, इस पर भरोसा करना एक अच्छा विचार नहीं है, लेकिन शायद यह फिर भी साझा करने के लिए उपयोगी जानकारी है।
जावा 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}