मैं जेपीए/ओपनजेपीए में नया हूं और मैंने देखा कि यदि मैं संस्थाओं को कायम रखने के बाद EntityManager.clear()
पर कॉल नहीं करता हूं तो मुझे OutOfMemoryError
(मैं एक लूप में नई इकाइयां जोड़ता हूं) प्राप्त करता हूं। मुझे यकीन नहीं है कि यह अपेक्षित व्यवहार है या यह सिर्फ और ओपनजेपीए 1.2.1 गड़बड़ है।क्या मुझे स्मृति लीक से बचने के लिए अक्सर EntityManager.clear() को कॉल करना है?
तो, क्या मुझे स्पष्ट रूप से संस्थाओं को अलग करने की आवश्यकता है? यदि मैं नहीं हूं, तो यह एक अच्छा अभ्यास है वैसे भी?
धन्यवाद। ठीक है, उत्तरों में संकेतों के साथ मुझे पता चला कि मुझे आवेदन में केवल एक लंबे समय तक रहने वाले EntityManager का उपयोग नहीं करना चाहिए। मुझे विधि के दायरे का उपयोग करना चाहिए या दायरे का अनुरोध करना चाहिए [1]। इससे em.clear() को कॉल करने की आवश्यकता को हटा दिया जाएगा। धन्यवाद! [1] http://javanotepad.blogspot.com/2007/08/managing-jpa-entitymanager-lifecycle.html – ecerulm
उपयोगी लिंक। मैंने निर्भरता इंजेक्शन (सीम का उपयोग करके) के साथ जेपीए का इस्तेमाल किया था, इसलिए इसी तरह के मुद्दे का सामना नहीं किया था। – Padmarag