2012-06-04 21 views
9

पर जावा के लिए अधिकतम मेमोरी ढेर बदलें मै मैक ओएस एक्स पर जावा के लिए अधिकतम मेमोरी आकार "हीप" को बदलने की कोशिश कर रहा हूं। मैंने "-XX: MaxPermSize" को बदलने के लिए कई जगहें पढ़ी हैं, लेकिन मैं ' फ़ाइल को नहीं ढूंढें और यह नहीं पता कि उस सेटिंग को कहां बदलना है।मैक ओएस एक्स

+0

Hoe आप जावा चला सकता हूँ? – Mark

+3

आपके पास "स्कैला" टैग क्यों है? यदि आप स्कैला चला रहे हैं, तो उत्तर जावा के लिए बिल्कुल वही नहीं है (यदि आप 'scala' का उपयोग नहीं कर रहे हैं 'जावा-सीपी /.../ scala-library.jar: ...')। –

+0

मैंने अतीत में जो किया है वह '' '/ bin/java'''' '' '/ bin/realjava''' पर है और फिर एक शेल स्क्रिप्ट '' '/ bin/java''' बनाता है जो कॉल करता है कुछ डिफ़ॉल्ट सेटिंग्स के साथ असली एक। हालांकि, मैं इसके खिलाफ सलाह देता हूं। आप प्रत्येक व्यक्तिगत जेवीएम को अपनी सटीक आवश्यकताओं के अनुरूप ट्यून करने से काफी बेहतर हैं। – opyate

उत्तर

1

अधिकतम ढेर आकार -Xmx स्विच का उपयोग कर सेट किया गया है।

-XX: MaxPermSize जो कुल ढेर के एक सबसेट है पर्म पीढ़ी के अधिकतम आकार निर्दिष्ट करने के लिए प्रयोग किया जाता है

+0

-Xmx स्विच विश्व स्तर पर स्मृति आकार को नहीं बदलता है, यह केवल एक समय में एक वर्ग के साथ काम करता है। मैं सोच रहा हूं कि सभी स्क्रिप्ट के लिए वैश्विक स्तर पर स्मृति आवंटन को कैसे बदला जाए। – user1435853

+2

@ user1435853 आपने यह कहां पढ़ा- एक्सएमएक्स वैश्विक नहीं है? यह पूरे जेवीएम पर लागू होता है। –

+0

मैं "फाइल :XX: MaxPermSize" सेट करने के लिए किस फ़ाइल को संपादित करता हूं। जब तक मैं कक्षा निर्दिष्ट नहीं करता तब तक "जावा-एक्सएमएक्स" कमांड मेरे लिए काम नहीं करता है। यह विश्व स्तर पर ढेर स्मृति सेटिंग को बदलता नहीं है। – user1435853

10

आप इस पैरामीटर का उपयोग कर स्मृति जावा वी एम के लिए उपलब्ध सेट कर सकते हैं:

-Xms64m -Xmx200m 

-Xms न्यूनतम मेमोरी निर्दिष्ट करता है; अधिकतम एक्सएक्सएक्स।

जब आप अपना ऐप चलाते हैं तो आपको उन्हें निर्दिष्ट करना होगा। उदाहरण के लिए, यदि आप एक जार app.jar नाम है, आप इसे

java -Xms64m -Xmx512m -jar app.jar 

मुझे लगता है कि एक 32 बिट मशीन पर आप JVM 1Gb से अधिक नहीं दे सकता टाइपिंग चला सकते हैं।

+1

यदि आप आईडीई का उपयोग करते हैं, तो आप शायद इन पैरामीटर को परियोजना की सेटिंग्स में सेट कर सकते हैं। ग्रहण में, उदाहरण के लिए, आप रन-> रन कॉन्फ़िगरेशन –

+0

पर क्लिक करके ऐसा क्यों कर सकते हैं केवल 1 जी? क्या यह सिद्धांत में 3 जी या 4 जी नहीं है? –

+0

32-बिट आर्किटेक्चर के साथ आप अधिकतम 4 जीबी भौतिक मेमोरी प्राप्त कर सकते हैं, लेकिन उपलब्ध स्मृति जो एक एप्लीकेशन, एक प्रक्रिया इत्यादि का उपयोग कर सकती है, कई कारकों पर निर्भर करती है। उदाहरण के लिए, ओएस को सिस्टम प्रक्रियाओं को संभालने के लिए स्वयं की स्मृति की आवश्यकता होती है। मुझे नहीं पता कि वीएम मेमोरी सीमा कहां से आती है, मुझे खेद है। वैसे भी, मुझे लगता है कि यह उस ओएस पर भी निर्भर करता है जिसका आप वर्तमान में उपयोग कर रहे हैं। विंडोज के तहत, मैं वीएम –

1

आप टर्मिनल से आवेदन लॉन्च करने जा रहे हैं, तो आप कमांड लाइन पर बहस की आपूर्ति चाहते हैं:

java -XX:MaxPermSize=128m ... 

यह किसी अन्य मंच पर के समान है।

यदि आपको इसे एप्लिकेशन बंडल (यानी, एक जावा ऐप जो नियमित, डबल क्लिक करने योग्य मैक ऐप की तरह दिखता है) के लिए सेट करने की आवश्यकता है, तो आपको info.plist फ़ाइल को संपादित करना होगा, जो बंडल के अंदर स्थित है और आमतौर पर दिखाई नहीं दे रहा है।

This page में इंटेलिजे के लिए ऐसा करने के निर्देश हैं, लेकिन यह अन्य बंडल किए गए मैक जावा ऐप्स पर भी लागू है।

5

मैं वेका का उपयोग कर रहा था और मुझे एक ही समस्या मिली। यहां, मुझे समाधान मिला, और यह आसान था।

आवेदन ==> पर जाएं (Weka की तरह) ==> पैकेज दिखाएँ सामग्री विशिष्ट अनुप्रयोग पर लेफ्ट क्लिक ==> सामग्री ==> Info.plist ==> जावा ==> VMOptions ==> वृद्धि जैसा कि आप चाहते हैं स्मृति का आकार (मेरे मैक में डिफ़ॉल्ट 1 जीबी था, मैं 6 जीबी तक बढ़ गया)

+0

मैं यह जवाब पसंद करता हूं क्योंकि यह सरल और सरल है और यह स्थायी फिक्स प्रदान करता है। –

1

मैं टर्मिनल में एक बेहद बड़ी सरणी के साथ एक जावा प्रोग्राम चलाने की कोशिश कर रहा था। यह स्मृति से बाहर चल रहा रखा, लेकिन मैं स्मृति में वृद्धि धागा के अनुसार अनुमति से समस्या तय:

$ java -Xss12G name 

यहाँ -Xss12G जावा रनटाइम बताता धागा प्रति 12Gb आवंटित करने के लिए और फिर name चलाते हैं। इसी तरह -Xss4G प्रति थ्रेड 4 जीबी का उपयोग करता है। $Terminal कंसोल प्रॉम्प्ट है और इसके पास फ़ोल्डर और आपका नाम होगा।

टर्मिनल में आदेश java -X लेखन आप ढेर और धागा स्मृति आवंटन बारे में अधिक जानकारी मिल जाएगा द्वारा:

$ java -X