मेरे पास जावा वेब एप्लिकेशन में एक थ्रेड है जो java.lang.OutOfMemoryError: जावा हीप स्पेस अपवाद का कारण बनता है, लेकिन कोशिश/पकड़ ब्लॉक में त्रुटि नहीं होती है।क्यों "java.lang.OutOfMemoryError: जावा हीप स्पेस" पकड़ा नहीं गया है?
नमूना कोड:
private void doSomeWork()
{
try
{
processData(); //Causes OutOfMemoryError
System.out.println("This line does not execute");
}
catch (Exception e)
{
System.out.println("Exception. This line does not execute.");
//Log error
}
finally
{
System.out.println("finally. This line does execute");
System.out.println("Thread name: " + Thread.currentThread().getName());
}
}
आउटपुट:
finally. This line does execute Thread name: _Worker-8 Exception in thread "_Worker-8" java.lang.OutOfMemoryError: Java heap space ...
पृष्ठभूमि:
मैं हाल ही में इस जावा परियोजना पदभार संभाल लिया है और मैं उठना कोशिश कर रहा हूँ जावा और इस परियोजना के साथ गति करने के लिए। मैं एक सी # डेवलपर हूं, इसलिए मैं इस परियोजना या जावा से अभी तक परिचित नहीं हूं। मुझे पता है कि मैं -Xmx सेटिंग का उपयोग कर त्रुटि को ठीक कर सकता हूं, लेकिन मुझे इस त्रुटि को पकड़ने में दिलचस्पी है इसलिए मैं इसे लॉग कर सकता हूं। त्रुटि किसी भी लॉग फ़ाइल में दिखाई नहीं दे रही है, और आउटपुट को ग्रहण में डीबग मोड में कंसोल में दिखाया जा रहा है।
लिंक संदर्भों के साथ अच्छा जवाब। मैं इसकी सराहना करता हूं, धन्यवाद! – Crispy
मैं आपके आवेदन के सबसे बाहरी भाग (या थ्रेड विधि के सबसे बाहरी हिस्से में) में फेंकने को पकड़ने की सलाह दूंगा ताकि आप वास्तव में जान सकें कि आपका प्रोग्राम निरस्त क्यों हुआ है (यदि कोई और नहीं है जो आपके लिए ऐसा करने जा रहा है)। –