2013-02-11 36 views
5

मैं कुछ डेटा संसाधित करने के लिए इन-मेमोरी मोड में एच 2 डीबी का उपयोग कर रहा हूं। मेरे जावा एप्लिकेशन को प्रत्येक रन में एच 2 डीबी में सभी ऑब्जेक्ट्स को छोड़ने और फिर से बनाने या छंटनी या छोड़ते समय JVM को रखने की आवश्यकता होती है। इसलिए मुझे डीबी यूआरएल में 'डीबी_CLOSE_DELAY = -1' विकल्प का उपयोग करने की आवश्यकता है।एच 2 डीबी रैम

पुनरावृत्ति के बाद मेमोरी को साफ करने के लिए मैंने 'सभी ऑब्जेक्ट्स ड्रॉ' का उपयोग करने की कोशिश की, 'सभी ऑब्जेक्ट्स हटाएं फाइलें' और प्रत्येक तालिका को एक-एक करके छोटा कर दिया। इन सभी ने जो हासिल किया वह हासिल किया, जिसने वर्तमान में कब्जा कर लिया था उस स्मृति को हटा नहीं दिया। मेरा डेटाबेस आकार लगभग 300 एमबी से 2 जीबी तक भिन्न होता है। इसलिए एक ही पुनरावृत्ति के बाद मेरी रैम लगभग 1 जीबी पर कब्जा कर लिया गया है और इस समाधान के कारण के बारे में कोई समाधान नहीं मिला है।

कुछ हद तक इस Clear the in memory database after every testcase के समान। लेकिन dbUnit के बिना और राम को भी साफ़ करने की आवश्यकता है।

क्या यह JVM को रोक दिए बिना ऐसा करना संभव है।

धन्यवाद।

+1

आप 'शटडाउन' कथन निष्पादित कर सकते हैं। यह कनेक्शन और डेटाबेस बंद कर देगा। –

+0

धन्यवाद यह काम किया। वही है जिसकी मैं तलाश कर रहा था। – Akalanka

+0

ठीक है, मैंने टिप्पणी को अभी उत्तर के रूप में जोड़ा है। –

उत्तर

4

आप shutdown कथन निष्पादित कर सकते हैं। यह कनेक्शन और डेटाबेस बंद कर देगा।

+0

हैलो, परेशान करने के लिए खेद है। लेकिन जब मैंने कोशिश की तो समाधान ने कुछ बार काम किया। लेकिन यह कभी-कभी काम नहीं करता है। मेरी जावा प्रक्रिया java.exe चलते समय 1.1 जीबी पर कब्जा कर लिया है। शटडाउन कमांड को निष्पादित करने के बाद इसे लगभग 80 एमबी तक घटा दिया गया जो मेरे प्रोग्राम का औसत औसत था। लेकिन मुझे लगता है कि विंडोज़ टास्क मैनेजर में हालांकि स्मृति का उपयोग करने की प्रक्रिया को कम कर दिया गया है, मेरी शारीरिक स्मृति को मुक्त नहीं किया गया है। जब मैं उपयोग कर रहा था java.exe प्रक्रिया को मैन्युअल रूप से समाप्त करने के बाद यह केवल 1.1 जीबी मुक्त हो गया। – Akalanka

+0

मैंने शट डाउन, शट डाउन कॉम्पैक्ट का उपयोग करके इस बार कुछ बार कोशिश की, पिछले सभी के साथ संयोजन के साथ सभी ऑब्जेक्ट्स को तुरंत हटाएं और ड्रॉ करें। लेकिन परिणाम अभी भी वही है और कभी-कभी java.exe प्रक्रिया भी स्मृति को कम नहीं करती है। यह 1.1 जीबी की आवंटित स्मृति रखता है जैसा कि यह है। क्या आप कभी इस पर आ गए हैं या मैं कुछ गलत कर रहा हूं। कृपया मदद करे। – Akalanka

+0

आपने स्मृति उपयोग को कैसे माप लिया? जावा ऑपरेटिंग सिस्टम में अप्रयुक्त ढेर मेमोरी वापस नहीं करता है। लेकिन मुझे आश्चर्य है कि क्या यह वास्तव में आपके लिए एक समस्या है। –