मेरे पास एक स्टैंडअलोन प्रोग्राम है जो मैं स्थानीय रूप से चलाता हूं, यह एक सर्वर प्रकार प्रोग्राम 24/7 है। हाल ही में मैंने पाया कि इसमें एक स्मृति रिसाव है, अभी हमारे एकमात्र समाधान हर 4 घंटे इसे पुनरारंभ करना है। इस स्मृति रिसाव को खोजने के बारे में जाने का सबसे अच्छा तरीका क्या है? हम किस उपकरण और विधि का उपयोग करना चाहिए?जावा मेमोरी रिसाव को हल करने के लिए सामान्य रणनीति?
उत्तर
यदि आप सूर्य से जावा का उपयोग कर रहे हैं और आप कम से कम जावा 6 अपडेट 10 (यानी नवीनतम) का उपयोग करते हैं, तो उसी प्रोग्राम पर जेडीके से jvisualvm चलाने का प्रयास करें क्योंकि आपका प्रोग्राम चल रहा है, और इसके साथ संलग्न करें और प्रोफाइलिंग सक्षम करें ।
यह शुरू करने का सबसे आसान तरीका है।
एक दृष्टिकोण नियमित रूप से ढेर डंप लेने के लिए होगा, फिर अपने वर्गों की आवृत्ति गणना को यह निर्धारित करने की कोशिश करें कि कौन सी वस्तुओं को लगातार बनाए रखा जा रहा है लेकिन एकत्र नहीं किया गया है।
एक और समस्या है जहां समस्या को कम करने की कोशिश करने के लिए आपके ऐप के कुछ हिस्सों को बंद करना होगा।
jmap और jhat जैसे टूल देखें।
आपको memory profiler की आवश्यकता है। मैं Netbeans profiler कोशिश करने की सलाह देते हैं।
आप जावा के साथ जहाजों जेएमएक्स और जेकनसोल ऐप देख सकते हैं। आप बॉक्स के बाहर कुछ दिलचस्प आंकड़े प्राप्त कर सकते हैं, और अपने वर्गों में कुछ सरल उपकरण जोड़ना बहुत अधिक प्रदान कर सकता है।
जब स्मृति समस्याओं की शिकार करने की बात आती है, तो मैं
SAP Memory Analyzer
Eclipse Memory Analyser (MAT), एक हीप डंप विश्लेषण टूल का उपयोग करता हूं।
मेमोरी विश्लेषक जावा हीप डंप का विश्लेषण करने के लिए एक सामान्य उद्देश्य टूलकिट प्रदान करता है। रखरखाव के आकार और तेज गणना के अलावा, ग्रहण उपकरण रिसाव संदिग्धों और स्मृति खपत विरोधी पैटर्न की रिपोर्ट करता है। आवेदन का मुख्य क्षेत्र मेमोरी त्रुटियों और उच्च स्मृति खपत से बाहर हैं।
एसएपी द्वारा शुरू किया गया, इस परियोजना को तब से खोला गया है और अब Eclipse Memory Analyser के रूप में जाना जाता है। leak report चल स्वचालित रूप से स्मृति लीक के लिए जाँच करने से
प्रारंभ: Getting Started पेज और विशेष रूप से Finding Memory Leaks खंड (मैं नीचे, क्योंकि मैं कुछ लिंक तय चिपकाने हूँ) की जाँच करें।
यह ब्लॉग विवरण How to Find a Leaking Workbench Window है।
मेमोरी विश्लेषक एसएपी में बड़ा हुआ। उसके बाद, क्रम ने लगभग Finding Memory Leaks with SAP Memory Analyzer ब्लॉग किया। सामग्री अभी भी प्रासंगिक है!
यह संभवतः हेप डंप विश्लेषण (और मेमोरी लीक) के लिए आपको सबसे अच्छा टूल (पैसे के लिए) मिल सकता है।
पीएस: मैं एसएपी/आईबीएम/ग्रहण के लिए काम नहीं करता, मैं सकारात्मक प्रतिक्रिया के साथ बस एक बहुत ही खुश एमटी उपयोगकर्ता हूं।
जैसा कि पहले से ही कहा गया है कि jvisualvm शुरू करने का एक शानदार तरीका है, लेकिन एक बार जब आप जानते हैं कि लीकिंग क्या है, तो आपको यह जानने की आवश्यकता हो सकती है कि प्रश्नों के संदर्भ में क्या संदर्भ है, जिसके लिए मैं jmap और jhat, e की सिफारिश करता हूं।जी
jmap -dump:live,file=heap.dump.out,format=b <pid>
और
jhat heap.dump.out
जहां < पीआईडी > आसानी से jvisualvm से पाया जाता है। फिर ब्राउज़र में स्थानीयहोस्ट पर नेविगेट करें: 7000 और एक्सप्लोर करना शुरू करें।
- 1. निचले सामान्य को हल करने के लिए सामान्य सामान्य तरीका, भले ही?
- 2. ios: इस स्मृति रिसाव चेतावनी हल करने के लिए कैसे
- 3. जावा मानक एपीआई में मेमोरी रिसाव जाल
- 4. मेमोरी क्रैश को हल करने के लिए कैसे करें
- 5. मेमोरी रिसाव जोखिम
- 6. सी के लिए मेमोरी रिसाव डिटेक्टरों?
- 7. रेडहाट लिनक्स में जावा/टॉमकैट मेमोरी रिसाव?
- 8. rabbitmq + अजवाइन मेमोरी रिसाव?
- 9. सी # मेमोरी रिसाव?
- 10. मेमोरी रिसाव JDK कक्षाएं
- 11. आईओएस - मेमोरी रिसाव AddressBook
- 12. एक भूलभुलैया को हल करने और हल करने के लिए एक ढेर का उपयोग करना - जावा
- 13. एमवीसी 4 आईआईएस मेमोरी रिसाव
- 14. इवेंट श्रोता में मेमोरी रिसाव
- 15. जटिल मल्टी-स्टेज खोजों के लिए सामान्य रणनीति
- 16. क्या यह पॉइंटर को वेक्टर के वेक्टर में पुश_बैक करने के लिए मेमोरी रिसाव है?
- 17. स्विंग श्रोता स्मृति रिसाव को कैसे हल करें?
- 18. ViewScoped बीन के साथ मेमोरी रिसाव?
- 19. CookieSyncManager के कारण मेमोरी लीक (गतिविधि रिसाव)?
- 20. मेमोरी JNI का उपयोग कर रिसाव जावा कोड
- 21. Entitymanager मेमोरी रिसाव का कारण बनता है?
- 22. जावा में मेमोरी रिसाव का यह संकेतक है?
- 23. जावा परिणाम को हल करने 137
- 24. मेमोरी रिसाव जब एक अजगर कार्यक्रम
- 25. थ्रेड। फ्रीऑनटर्मिनेट: = ट्रू, मेमोरी रिसाव और भूत
- 26. ग्रहण परिप्रेक्ष्य त्रुटि को हल करने के लिए कैसे?
- 27. क्या एक एप्लिकेशन मेमोरी रिसाव एक ऑपरेटिंग सिस्टम मेमोरी रिसाव का कारण बनता है?
- 28. चर के वर्ग के लिए एक समीकरण को हल करने?
- 29. निजी बाइट्स (मूल स्मृति) रिसाव कैसे हल करें?
- 30. रेल मेमोरी रिसाव पर रूबी; find_each
पिछली बार मैंने चेक किया, नवीनतम अपडेट 16 था ... :-) हालांकि यह सुनिश्चित नहीं है कि VisualVM को कब पेश किया गया था। क्या यह हाल ही में है? – PhiLho
जेवीएसयूएलवीएम को 1.6.0_07 में जेडीके में जोड़ा गया था, मुझे विश्वास है। –
VisualVM प्रारंभ करें। सूची से चल रही प्रक्रिया का चयन करें। राइट क्लिक करें और हीप डंप चुनें। इसे थोड़ा सा चलाने दें। एक और ढेर डंप कैप्चर करें। फिर फ़ाइल का उपयोग करें> क्या बदल गया है यह देखने के लिए मेमोरी स्नैपशॉट की तुलना करें। –