क्यों निम्नलिखित कोडस्मृति त्रुटियों से बाहर जावा
List<Object> list = new ArrayList<>();
while (true) {
for(int i = 0; i < 1000000; i++){
list.add(new Object());
}
}
स्मृति त्रुटि
के बाहर का उत्पादन करता है लेकिन इस कोड
while(true) {
List<Object> list = new ArrayList<>();
for(int i = 0; i < 1000000; i++){
list.add(new Object());
}
}
मैं देख सकता हूँ कि यह कुछ है कि नहीं है सूची के साथ या तो लूप के अंदर या इसके बाहर स्पष्ट रूप से बनाया जा रहा है, लेकिन मुझे कारण पर अनिश्चितता है।
एक साधारण स्मृति रिसाव ... दूसरे नमूने के लिए आप कचरा कलेक्टर – FieryCat
जावा के लिए काम को सरल बनाते हैं, जहां कचरा कलेक्टर नई वस्तुओं को संग्रहीत करता है। जब ढेर भरा होता है और जीसी नई वस्तुओं को समायोजित नहीं कर सकता है OutOfMemoryError फेंक दिया जाता है। जावा क्लास –
@FieryCat को आसान बनाने के लिए अपर्याप्त देशी मेमोरी होने पर भी यह त्रुटि फेंक दी जा सकती है ... पहले मामले में कचरा इकट्ठा करने के लिए कुछ भी नहीं है। – wvdz