का उपयोग करते समय उच्च मेमोरी उपयोग मैं सर्वर सर्वर साइड एप्लिकेशन को जावा सर्वर के साथ लिनक्स सर्वर पर चलाता हूं। मैं डेटाबेस में सत्र खोलने के लिए हाइबरनेट का उपयोग करता हूं, इसे पूछने के लिए देशी एसक्यूएल का उपयोग करता हूं और अंततः कोशिश, पकड़, आखिरकार इस सत्र को बंद करता हूं।हाइबरनेट
मेरे सर्वर क्वेरी डीबी बहुत उच्च आवृत्ति के साथ हाइबरनेट का उपयोग कर।
मैं पहले से ही MaxHeapSize बताएं कि वह 3000 मी है, लेकिन आमतौर पर राम 2.7GB उपयोग करें, यह कम कर सकते हैं, लेकिन वृद्धि की तुलना में धीमी है। कभी-कभी यह 3.6 जीबी मेमोरी उपयोग तक बढ़ता है, मेरे मैक्सहेप आकार से शुरू होने पर परिभाषित होता है।
जब इस्तेमाल किया स्मृति 3.6GB है, मैं -jmap आदेश के साथ यह डंप करने के लिए कोशिश करते हैं और केवल 1.3GB के आकार के साथ एक heapdump मिला है।
इम ग्रहण मेट का उपयोग कर इसे विश्लेषण करने के लिए, यहाँ मुझे लगता है कि हाइबरनेट समस्या है मेट से dominator पेड़ है, मैं इस तरह इतने सारे org.apache.commons.collections.map.AbstractReferenceMap $ ReferenceEntry है। यह कचरा संग्रह द्वारा निपटान नहीं किया जा सकता है या धीमा कर सकते हैं।
मैं इसे कैसे ठीक कर सकता हूं?
क्या आप मुझे थोड़ा और सिखा सकते हैं? मुझे ऑरैकल डेटाबेस इंटरैक्शन के बारे में थोड़ा सा अनुभव नहीं है। – Viet
आपको एन प्रविष्टियां लाने की आवश्यकता है, उन्हें अपडेट करें और फिर अगले बैच को लाएं और इसी तरह। –
मैं अभी भी उलझन में हूं, मेरी क्वेरी में "अद्यतन .. कहां .. IN (...) ", क्वेरी सूची में छोटा है और यह 1000 तक नहीं पहुंच सकता है। और जब मैं ग्रहण मैट में डोमिनेटर पेड़ के पत्ते तक फैलता हूं, तो मुझे अपनी चुनिंदा क्वेरी ('sqlQueryCheckSet' मेरे कोड में) मिलती है, इसमें से कई, और मुझे लगता है कि केवल यह – Viet