2009-06-25 10 views
5

मुझे यह निर्धारित करने की आवश्यकता है कि मेरे एप्लिकेशन कोड में कौन से ताले सबसे ज्यादा दिक्कत वाले हैं। यह निर्धारित करने के लिए मैं किस मुफ्त उपकरण का उपयोग कर सकता हूं?जावा में लॉक विवाद का विश्लेषण करने के लिए कौन से निःशुल्क टूल्स उपलब्ध हैं?

उत्तर

4

आप JConsole का उपयोग करें या दोनों अपने JDK की बिन निर्देशिका में jstack कर सकते हैं। विशेष रूप से jconsole आपको अपनी प्रक्रिया से कनेक्ट करने और थ्रेड की निगरानी करने की अनुमति देता है जिसमें संसाधनों को लॉक किया गया है, और यह आपको डेडलॉक स्थिति की पहचान करने में मदद कर सकता है।

+2

मुझे लगता है कि यह प्रश्न एप्लिकेशन चलाने के दौरान लॉक विवाद के बारे में कुछ आंकड़ों से संबंधित है - जो सिस्टम में हॉट लॉक हैं। – akarnokd

2

VisualVM (जावा 1.6 का एक हिस्सा) (see)

+0

क्या VisualVM को इसके लिए एक अलग प्लगइन की आवश्यकता नहीं है? – akarnokd

2

जेडीके में कुछ अंतर्निहित समर्थन है - यूनिक्स के तहत, प्रक्रिया -3, विंडोज़ के तहत, ctrl-break। यह एक पूर्ण थ्रेड डंप प्रदर्शित करेगा, इसके बाद किसी भी डेडलॉक्स का पता लगाया जाएगा। इसके अलावा, धागे dusmp में आप देख सकते हैं कि धागे क्या ताले हैं, और एक दूसरे से तुलना करें।

+1

आपको थ्रेड डंप प्राप्त करने के लिए प्रक्रिया को मारने की आवश्यकता नहीं है - बस jstack चलाएं जहां प्रक्रिया आईडी है। –

+3

हत्या -3 कमांड प्रक्रिया को मार नहीं देता है। यह सिर्फ इसे संकेत देता है, लेकिन प्रक्रिया जारी रहेगी। –

3

आप इसे ग्रहण के डीबगर में भी देख सकते हैं। डीबग व्यू में, "जावा-> मॉनीटर शो" चालू करने के लिए व्यू टूलबार पर छोटे डाउन-त्रिकोण मेनू का उपयोग करें।

जब आपको डेडलॉक पर संदेह होता है, तो एप्लिकेशन को रोकें (डीबग व्यू में एप्लिकेशन का चयन करें और डीबग व्यू टूलबार पर विराम बटन दबाएं) और यदि कोई डेडलॉक है, तो ब्लॉकिंग थ्रेड लाल हो जाएंगे। यदि आप उन धागे का विस्तार करते हैं तो आप लॉक विवाद देख सकते हैं।

2

यदि आपके पास कोड है, तो आप लॉक कार्यान्वयन को बना सकते हैं/देख सकते हैं जो विवाद आंकड़े एकत्र करता है। यदि नहीं, तो अन्य पदों में सुझाए गए टूल आज़माएं।

+0

क्या आपके पास इस प्रकार के कार्यान्वयन (यानी जावा कोड) के कोई उदाहरण हैं – Rhubarb

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

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