2010-11-04 10 views
10

वर्तमान में मैं समस्या यह है कि मेरे आवेदन लंबे जीसी बार कई मायनों दिखाया जा रहा है का सामना करना पड़ रहा हूँ, लेकिन इन सभी केवल कमजोर संदर्भ प्रक्रिया के कारण होता है। तो थ्रेड बंद समय हमेशा कमजोर रेफरी प्रोसेसिंग समय के करीब है। अन्य सभी जीसी चक्र 0.0001 सेकेंड से 0.200 सेकेंड हैं।जीसी के दौरान कमजोर रेफरी प्रोसेसिंग समय को कैसे कम कर सकता हूं?

gc.log से (पुन: स्वरूपित):

10388.186: [GC[YG occupancy: 206547 K (306688 K)]10388.186: [Rescan (parallel) , 
0.1095860 secs]10388.295: [weak refs processing, 2.0799570 secs] 
[1 CMS-remark: 2973838K(3853568K)] 3180386K(4160256K), 2.1899230 secs] 
[Times: user=2.51 sys=0.00, real=2.18 secs] 
Total time for which application threads were stopped: 2.1906890 seconds 

वर्तमान में मैं जगह में ये सेटिंग हैं। सरल सेटिंग्स का प्रयास किया, लेकिन कोई बदलाव नहीं।

-Xms4g 
-Xmx4g 
-XX:NewSize=128m 
-XX:+UseConcMarkSweepGC 
-XX:+CMSIncrementalMode 
-XX:MaxGCPauseMillis=50 
-XX:CMSInitiatingOccupancyFraction=50 
-XX:ParallelGCThreads=16 
-XX:+DisableExplicitGC 

यदि मैं न्यूसाइज चालू करता हूं, तो मैं लंबे सामान्य जीसी चक्रों के साथ समाप्त होता हूं। मशीन में 8 कोर हैं और एप्लिकेशन के लिए इतना सीपीयू जला नहीं है। पुराने जीन जीसी को जल्दी और समवर्ती रूप से चलाने की कोशिश की।

और हाँ, मैं कमजोर रेफरी उपयोग बंद छुटकारा, क्योंकि यह एक 3 पार्टी पुस्तकालय का हिस्सा है नहीं मिल सकता है।

उत्तर

7

मैं "हॉटस्पॉट-जीसी उपयोग" मेलिंग सूची में this message पाया।

संक्षेप में, -XX:+ParallelRefProcEnabled स्विच प्रयास करें। कम ठहराव कलेक्टर में

6) समानांतर संदर्भ प्रक्रिया:


अद्यतन

मैं जॉन Masamitsu के Weblog में एक बेहतर स्पष्टीकरण मिल गया।

संदर्भ वस्तुओं कार्रवाई करने के लिए ध्यान देने योग्य हो सकता है बड़े पैमाने पर Reference वस्तुओं का उपयोग करता है, जीसी काम एक आवेदन के लिए

। अन्य संग्रहों की तुलना में कम विराम संग्राहक में यह जरूरी नहीं है, लेकिन इससे अधिक दर्द होता है (क्योंकि हम विराम को कम रखने की कोशिश कर रहे हैं)। समांतर संदर्भ प्रसंस्करण कम विराम संग्राहक के लिए उपलब्ध है लेकिन डिफ़ॉल्ट रूप से चालू नहीं है। जब तक संदर्भ वस्तुएं नहीं हैं, संदर्भ प्रक्रिया को क्रमशः सामान्य रूप से तेज़ करना होता है। यदि आप Reference ऑब्जेक्ट्स (अधिकतर एप्लिकेशन नहीं) का व्यापक उपयोग करते हैं तो इसे ध्वज -XX:+ParallelRefProcEnabled पर चालू करें।

+0

महान। मैं इसे कल सुबह आज़मा दूंगा। – ReneS

+0

कृपया सही प्रारूप नोट करें: -XX: + समानांतर RefProcEnabled – ReneS

+0

सहायता करता है! समय अब ​​0.2 - 0.5 के आसपास हैं और अनुमान लगाया जा सकता है। बहुत बढ़िया! – ReneS