डफिमो लगभग निश्चित रूप से सही है। अतीत में जब हमारे पास मेमोरी लीक होती है, तो यह व्यावहारिक रूप से हमेशा MySQL JDBC ड्राइवर होता है। बस एक छोटे से रिजल्टसेट या कनेक्शन या स्टेटमेंट को कहीं बंद करना भूल जाते हैं। मैंने हर बार समस्या का पता लगाने और उन्हें बंद करने के लिए सुनिश्चित करने के लिए पूरे कोडबेस का ऑडिट करना समाप्त कर दिया।
हैश मैप के लिए, मैंने वह भी देखा है। मैंने स्रोत को नहीं देखा है लेकिन मेरी धारणा यह थी कि MySQL ड्राइवर ने पंक्तियों (कम से कम पंक्ति मान) को हैश मैप्स में आंतरिक रूप से संग्रहीत किया था।
रिजल्टसेट्स को लीक करना दुखद रूप से आसान है। JDK 7 या 8 में आने वाले उन करीबी संसाधनों का विचार जो स्वयं इसका ख्याल रखते हैं, वास्तव में मुझे इस कारण से अपील करते हैं।
आप प्रत्येक खुले/बंद संसाधन को लॉग इन करने के लिए कहीं एक शिम क्लास (कनेक्शन के लिए कहें) सम्मिलित कर सकते हैं यह देखने के लिए कि क्या आप अपने सभी स्रोतों को सीधे पढ़े बिना रिसाव को पकड़ सकते हैं।