यह आमतौर पर 'उच्च CPU' समस्या है।
उच्च CPU समस्याओं
के दो प्रकार के होते हैं
क) जहाँ धागे पर) एक कोर की 100% सीपीयू (यह आपके परिदृश्य है)
ख CPU उपयोग 'असामान्य रूप से उच्च' जब हम है उपयोग कर रहा है कुछ क्रियाएं निष्पादित करें। ऐसे मामलों में सीपीयू 100% नहीं हो सकता है लेकिन असामान्य रूप से उच्च होगा। आम तौर पर ऐसा तब होता है जब हमारे पास एक्सएमएल पार्सिंग, सीरियलाइजेशन डी-सीरियलाइजेशन इत्यादि जैसे कोड में सीपीयू गहन संचालन होता है।
केस (ए) विश्लेषण करना आसान है। जब आप 30 सेकंड अंतराल में 100% सीपीयू 5-6 थ्रेड डंप का अनुभव करते हैं। एक थ्रेड की तलाश करें जो सक्रिय है ("रननेबल" स्थिति में) और जो एक ही विधि के अंदर है (आप थ्रेड स्टैक की निगरानी करके इसका अनुमान लगा सकते हैं)। अधिकांश शायद यह है कि आप एक 'व्यस्त प्रतीक्षा' देखेंगे (उदाहरण के लिए नीचे दिए गए कोड को देखने)
while(true){
if(status) break;
// Thread.sleep(60000); // such a statement would have avoided busy wait
}
प्रकरण (ख) भी बराबर अंतराल में लिया धागा डंप का उपयोग कर विश्लेषण किया जा सकता। यदि आप भाग्यशाली हैं तो आप समस्या कोड का पता लगाने में सक्षम होंगे, यदि आप थ्रेड डंप का उपयोग करके समस्या कोड की पहचान करने में सक्षम नहीं हैं। आपको प्रोफाइलर्स का सहारा लेना होगा। मेरे अनुभव में आपकाकिट प्रोफाइलर बहुत अच्छा है।
मैं हमेशा पहले थ्रेड डंप के साथ प्रयास करता हूं। प्रोफाइलर केवल अंतिम उपाय होंगे। 80% मामलों में हम थ्रेड डंप का उपयोग करने में पहचान पाएंगे।
स्रोत
2008-09-18 06:47:53
धन्यवाद दोस्तों! मैं eclipse btw – jjnguy