2012-10-31 6 views
11

को स्पिन कर देगा I जेनकिंस बिल्ड सर्वर पर एक मेवेन जावा ऐप बना रहा हूं। मैं जेनकिंस पर निर्माण के दौरान java.lang.OutOfMemoryError: PermGen space में कई बार दौड़ रहा हूं (लेकिन कभी भी मेरे लोकहोस्ट पर नहीं) और इसलिए यह मेरे निर्माण में विफल रहता है।चाइल्ड जेवीएम प्रक्रियाओं के लिए परमेजन आकार सेट करें कि मेवेन

मैं पहले से ही जेनकींस के लिए MAVEN_OPTS स्थापित करने की कोशिश की है: मैं Jenkins में चला गया ->Manage Jenkins ->Configure system ->Global MAVEN_OPTS और यह -Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:PermSize=512m करने वाले थे। इसे इस उच्च मूल्य पर सेट करने के बावजूद, हम PermGen अंतरिक्ष समस्याओं में चलते रहते हैं। मैं MAVEN_OPTS को उच्च मान पर सेट नहीं करना चाहता; मैं नहीं देखता कि मेरे ऐप को अंतरिक्ष के एक छिद्र की आवश्यकता हो सकती है, और मैं उच्च स्मृति-उपयोग समस्या में गहरी खुदाई करना चाहता हूं।

हाल ही में, मैं सोच रहा हूं कि संभवतः परमजन स्पेस इश्यू मैवेन से नहीं आ रहा है बल्कि जेवीएम प्रक्रियाओं में से एक है जो मैवेन स्पिन ऑफ (एक्स: प्लगइन्स) है। मैं इस परिकल्पना का प्रस्ताव करता हूं क्योंकि मेवेन अभी भी हमारे ट्रांसजेन स्पेस त्रुटि लाइनों को थूकने के बावजूद टेस्टएनजी परीक्षण निष्पादित करने में सक्षम है। ,

Oct 31, 2012 7:55:37 AM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: handle failed 
java.lang.OutOfMemoryError: PermGen space 

इसलिए मैं जानना चाहूंगा: ऐसा ही एक प्लगइन है कि PermGen त्रुटि पैदा जेट्टी है

MAVEN_OPTS चर भी बच्चे के लिए लागू करता है JVM प्रक्रियाओं है कि एक Maven निर्माण बंद spins ? यदि नहीं, तो मैं जेटी जैसे इन बाल प्रक्रियाओं के लिए JVM विकल्प कैसे सेट करूं?

नोट: मैं मैवेन 3.0.4 का उपयोग कर रहा हूं।

उत्तर

7

अधिकांश मैवेन प्लगइन्स जो जावा प्रक्रियाओं को जन्म देते हैं, उनके पास JVM कमांड लाइन तर्क निर्दिष्ट करने का अपना तरीका होगा। उदाहरण के लिए, आप argLine कॉन्फ़िगरेशन पैरामीटर का उपयोग करके Surefire प्लगइन द्वारा उत्पन्न प्रक्रियाओं में ढेर और permgen आकार को कॉन्फ़िगर कर सकते हैं (http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#argLine देखें)।

जेट्टी प्लगइन प्रक्रियाओं को जन्म नहीं देता है, इसलिए हेप और परजेन मेवेन प्रक्रिया को प्रदान किए गए जेवीएम तर्कों द्वारा शासित होते हैं।

यदि आप जेनकींस से चलते समय स्मृति से बाहर हो रहे हैं लेकिन स्थानीय रूप से चलते समय नहीं, तो MAVEN_OPTS जांचें कि जेनकिन्स मेवेन से गुजरता है।

+0

हमने argLine सेट करने का प्रयास किया, लेकिन जब हम 'mvn gae: run' चलाते हैं, तो यह काम नहीं करता है, जो * maven-gae-plugin * है। – ecbrodie

+1

'maven-gae-plugin' के स्रोत कोड को देखते हुए, आपने अपने 'jvmFlags' पैरामीटर को आजमाया है? – Kkkev

+0

मैंने हाल ही में इसी समस्या में भाग लिया, इसलिए मैंने 'jvmFlags' पैरामीटर को सेट करने के बारे में आपके सुझाव की कोशिश की ... और यह एक आकर्षण की तरह काम करता था! मेरी समस्या यह थी कि हमने maven-gae-plugin के लिए कॉन्फ़िगरेशन में '' टैग सेट किया है, लेकिन हमें '' का उपयोग करना चाहिए था। धन्यवाद! – ecbrodie

1

आप विश्व स्तर पर vm विकल्प कॉन्फ़िगर कर सकते हैं (सेटिंग्स) और किसी भी बिल्डिंग नौकरी के लिए इसे ओवरराइड कर सकते हैं। जैसे मेवेन आधारित नौकरियों में, MAVEN_OPTS फ़ील्ड "उन्नत" ब्लॉक में से एक में छिपा हुआ है।

1

जैसा कि पहले उल्लेख किया गया था कि प्रत्येक प्रक्रिया में तर्क निर्दिष्ट करने का अपना तरीका है। जेनकिंस द्वारा उत्पन्न मेवेन उप प्रक्रिया के मामले में सेटिंग मेवेन बिल्ड के तहत नौकरी कॉन्फ़िगरेशन में होगी। आपको "उन्नत" बटन पर क्लिक करने और MAVEN_OPTS फ़ील्ड में विकल्प सेट करने की आवश्यकता है। उदाहरण: -XX:MaxPermSize=256m -Xms512m -Xmx1024m

संबंधित मुद्दे