2008-09-20 16 views
6

मैं एक बड़े एप्लिकेशन (300 के एलओसी) पर काम कर रहा हूं जो सूर्य 1.6 जेवीएम (1.6_05) में मेमोरी रिसाव का कारण बन रहा है। जावा प्रोफाइलिंग कोई रिसाव दिखाता है। क्या JVM से कोई निदान उपलब्ध है जो रिसाव के कारण का पता लगा सकता है?
मैं एक साधारण, पृथक जावा परीक्षण केस बनाने में सक्षम नहीं हूं। JVM पर एक सी ढेर विश्लेषक का उपयोग करके इसे समझने का एकमात्र तरीका है?
एप्लिकेशन सॉकेट का एक पूल बनाता है और नेटवर्क I/O की एक महत्वपूर्ण मात्रा करता है।जावा प्रोग्राम के कारण सी मेमोरी में रिसाव का निदान कैसे करते हैं?

उत्तर

2

प्रोफाइलर 4j जैसे कुछ प्रोफाइलर प्रबंधित और अप्रबंधित स्मृति (लाइव वक्र) दिखा सकते हैं। फिर आप देख सकते हैं कि क्या आपके पास रिसाव है और जब रिसाव होती है। लेकिन आपको अधिक जानकारी नहीं मिलती है।

  1. आप लाइव वक्र के साथ समस्या को अलग करने और जब तक आप समस्या के कारणों का पता है एक सरल परीक्षण बना सकते हैं:

    इसके बाद 2 संभव समाधान कर रहे हैं। वर्ग थ्रेड कि कभी नहीं शुरू कर रहे हैं की

    1. उदाहरण:
    2. आप की तरह विशिष्ट समस्याओं के लिए अपने कोड खोज करते हैं।
    3. चित्र या ग्राफिक्स कि निपटाने हैं कभी नहीं
    4. ODBC ब्रिज वस्तुओं है कि करीब
0

मैं valgrind (http://valgrind.org/) प्यार कभी नहीं कर रहे हैं, यदि आप एक सिस्टम पर यह क्रियान्वित कर रहे हैं इसका समर्थन करता है। यह वास्तव में चट्टानों!

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