जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम चेतावनी: विकल्प को अनदेखा करना MaxPermSize


133

मावेन के साथ जावा 8 प्रोजेक्ट बनाते समय:

mvn clean package

मुझे यह संदेश मिला:

Java हॉटस्पॉट (TM) 64-बिट सर्वर VM चेतावनी: अनदेखा विकल्प MaxPermSize = 128m; 8.0 में समर्थन हटा दिया गया था

इस संदेश को कैसे निकालें?


2
पूर्ण विवरण के लिए Bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 देखें
Dag

1
आपके पास पहले से ही IDEA का एक उदाहरण हो सकता है। [१]: stackoverflow.com/a/20553943/3741698
डेविड हैकरो

जवाबों:


163

जेडीके 8 के लिए संगतता गाइड का कहना है कि जावा 8 में कमांड लाइन का झंडा MaxPermSizeहटा दिया गया है। कारण यह है कि स्थायी पीढ़ी को हॉटस्पॉट के ढेर से हटा दिया गया था और देशी मेमोरी में स्थानांतरित कर दिया गया था। तो इस संदेश को हटाने के लिए MAVEN_OPTS पर्यावरण उपयोगकर्ता चर को संपादित करें :

जावा 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

जावा 8

MAVEN_OPTS -Xmx512m

13
और इसका कारण यह है कि ओरेकल के JRE 8, AFAIK में पूरे PermGen स्पेस को हटा दिया गया है।
पोस

1
अगर किसी को यह पता नहीं है कि यह कैसे करना है - sudo gedit ~/.profile, वहां जवाब से लाइन जोड़ें और फ़ाइल को सहेजें।
गत

मेरे पास यह विकल्प ~ / .bashrc फाइल
paka

@gotqn आप sudoअपने होम फ़ोल्डर में एक फ़ाइल क्यों संपादित करेंगे ? मेरे लिए बहुत अजीब प्रथा लगती है।
प्रति लंडबर्ग

22

JDK 8 हॉटस्पॉट JVM अब वर्ग मेटाडाटा के प्रतिनिधित्व के लिए देशी स्मृति उपयोग कर रहा है और कहा जाता है Metaspace

स्थायी पीढ़ी को हटा दिया गया है। PermSizeऔर MaxPermSizeध्यान नहीं दिया जाता है और एक चेतावनी जारी की है कि अगर वे कमांड लाइन पर मौजूद हैं।


यह केवल अप्रत्यक्ष रूप से प्रश्न का उत्तर देता है ... उत्तर "झंडे को हटाने के लिए चेतावनी को हटा दें" है। के रूप में व्यावहारिक टिप्पणी @ द्वारा ओहद-श्नाइडर का पता चलता है, वहाँ कोई है एक उनके लिए एक प्रतिस्थापन।
conny

10
-XX:MaxPermSize=size

अधिकतम स्थायी पीढ़ी अंतरिक्ष आकार (बाइट्स में) सेट करता है। इस विकल्प को JDK 8 में पदावनत कर दिया गया था, और -XX:MaxMetaspaceSizeविकल्प द्वारा अधिगृहीत किया गया था।

-XX:PermSize=size

अंतरिक्ष में (बाइट्स में) स्थाई पीढ़ी को आबंटित किया जाता है जो कचरा संग्रहित हो जाता है यदि इसे पार कर लिया जाए। इस विकल्प को JDK 8 में पदावनत कर दिया गया था, और -XX:MetaspaceSizeविकल्प द्वारा अधिगृहीत किया गया था।


12
मैं इस downvoted गया था क्योंकि यह मतलब है कि आप के पिछले उपयोग करता है स्विच कर लेना चाहिए लगता है MaxPermGenके साथ MaxMetaSpaceSizeहै, जो भ्रामक है के बाद से अपनी भूमिका को व्यावहारिक रूप से उलट है। जावा से पहले 8 क्लास मेटाडेटा स्पेस पर्मगेन में रहता था जो कि 32 / 64MB तक सीमित था, और इसे बढ़ाने केMaxPerGen लिए इस्तेमाल किया गया था । हालांकि, जावा 8 से शुरू होकर, PermGen कोई अधिक नहीं है और वर्ग मेटाडेटा स्थान असीमित है, इसलिए आकार वास्तव में इसे कम करने के लिए उपयोग किया जाता है । अधिक जानकारी के लिए देखें: stackoverflow.com/a/31463972/67824MaxMetaspace
ओएचडी श्नाइडर

8

JBoss EAP 6.4 में, सर्वर पर राइट क्लिक करें और VM लॉजिक के तहत लॉन्च लॉन्च खोलें, जो आपको मिलेगा

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

इसे अपडेट करें

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

इससे आपकी समस्या दूर हो जाएगी।


1

जावा के साथ लिनक्स पर कमांड लाइन mvn (संस्करण 3.3.3) चलाते समय मुझे इसी तरह का संदेश मिला। 8. मावेन स्क्रिप्ट / $ MAVEN-HOME / bin / mvn को खोलकर, निम्नलिखित पंक्ति मिली

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

जहां डिफ़ॉल्ट रूप से $ MAVEN_PROJECTBASEDIR आपके घर निर्देशिका है। तो दो जगहों पर आप देख सकते हैं, पहले फ़ाइल $ MAVEN_PROJECTBASEDIR / .Mvn / jvm.config है अगर यह मौजूद है। दूसरी बात यह है कि संभवतया पर्यावरण चर MAVEN_OPTS की फाइलों को देखें। कैंडिडेट फाइलें हैं .bashrc, .bash_profile, .profile और उनके द्वारा शामिल की गई फाइलें जैसे / etc / profile, /etc/bash.bashrc

मैं स्थित है

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

मेरे सिस्टम में .bashrc, इसे बदल दें

export MAVEN_OPTS="-Xmx512m"

मसला हल हो गया


1

अगर किसी को अभी भी इस तरह का संदेश मिलता है। यह तब होता है क्योंकि आप मावेन प्रोजेक्ट चलाते समय जेवीएम तर्क जोड़ते हैं। क्योंकि यह मावेन से संबंधित है इसलिए आप अपनी pom.xmlफ़ाइल को अपने प्रोजेक्ट पर देख सकते हैं ।

इस लाइन को ढूंढें <argLine>...</argLine>, मेरे प्रोजेक्ट पर मेरे पास नीचे तर्क भी हैं

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

आपको MaxPermSizeतर्क को प्रतिस्थापित करना चाहिए -Xms123m -Xmx123m, क्योंकि MaxPermSizeपहले से ही अपदस्थ है और आपके जेवीएम विन्यास पर कोई प्रभाव नहीं पड़ेगा:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

-1

कृपया इस समस्या को हल करने के लिए हमने अभी JDK पथ स्थापित किया है

standalone.conf

फ़ाइल जो JBoss \ Wildfly सर्वर के बिन फ़ोल्डर में है। इसे हल करने के लिए हम निम्न चरण करते हैं:

  1. JBoss_or_wildfly \ bin फ़ोल्डर के अंतर्गत स्टैंडअलोन.कॉन्फ़ फ़ाइल खोलें
  2. इस फ़ाइल के भीतर #JAVA_HOME टेक्स्ट ढूंढें
  3. # वर्ण निकालें और अपने स्थापित JDK पथ को JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" के रूप में सेट करें " आशा है कि यह आपकी समस्या को हल करेगा धन्यवाद

मूल समस्या मावेन परियोजना में है। इसका JBoss से कोई लेना-देना नहीं है।
बोरिस

-5

ग्रहण उपयोगकर्ताओं के लिए ...

रन -> रन कॉन्फ़िगरेशन -> हैं -> 1.6 या 1.7 के लिए वैकल्पिक JRE सेट करें पर क्लिक करें

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