मेरे जावा एप्लिकेशन में धीमी मेमोरी लीक है। मैं सोच रहा था कि यह इस्तेमाल होने पर हमेशा Entitymanager को बंद न करने के कारण हो सकता है। हालांकि MyEclipse का उपयोग कर डीबी कोड उत्पन्न करने के लिए, मैं इस तरह के तरीकों हो रही है:Entitymanager मेमोरी रिसाव का कारण बनता है?
public Meit update(Meit entity) {
logger.info("updating Meit instance");
try {
Meit result = getEntityManager().merge(entity);
logger.info("update successful");
return result;
} catch (RuntimeException re) {
logger.error("update failed");
throw re;
}
}
कौन सा EntityManager बंद कभी नहीं। इसे ध्यान में रखते हुए कोड उत्पन्न होता है, मैं सोच रहा हूं कि कौन सही है, मुझे या आईडीई।
मैं जानता हूँ कि मैं एक स्मृति रिसाव क्योंकि एप्लिकेशन हर कुछ हफ्तों में दुर्घटनाग्रस्त हो जाता है और स्मृति त्रुटियों से बाहर निकलता है। यह एक वेब ऐप है। मैं eclipselink का उपयोग कर रहा हूँ। मैंने सोचा कि ईएम को बंद किया जाना चाहिए: http://stackoverflow.com/questions/220374/do-i-have-to-close-every-entitymanager – GBa
क्या आप हाथ से ईएमएफ बना रहे हैं? एक वेब ऐप में आपको इसे स्वीकार किए जाने वाले उत्तर की तरह इंजेक्शन देना चाहिए, इस मामले में आपको हाथ से इसे बनाना या बंद नहीं करना चाहिए।क्या इस तस्वीर में वसंत है? – cletus
मैं टोमकैट का उपयोग कर रहा हूं, इसलिए इसे इंजेक्शन नहीं दिया जा सकता क्योंकि कोई ईजेबी नहीं है। मैं ईएम बनाने के लिए एक EntityManagerFactory का उपयोग कर रहा हूँ। मैं अनुमान लगा रहा हूं कि सत्र समाप्त हो जाने के बाद, इन्हें साफ नहीं किया जा रहा है। – GBa