OutOfMemoryError JVM দ্বারা নিক্ষিপ্ত হয় , যখন JVM-এ পর্যাপ্ত উপলব্ধ মেমরি নেই, বরাদ্দ করার জন্য। OutOfMemoryError E এর মধ্যে পড়ে ত্রুটির বিভাগ ব্যতিক্রম -এ শ্রেণী অনুক্রম।
OutOfMemoryError তৈরি করতে
- আমরা মেমরির একটি বড় অংশ বরাদ্দ করব, যা গাদা মেমরি স্টোরেজ নিঃশেষ করে দেবে .
- আমরা মেমরি বরাদ্দ করতে থাকব এবং পয়েন্ট পৌঁছাবে, যখন JVM এর বরাদ্দ করার জন্য যথেষ্ট মেমরি থাকবে না, তখন OutOfMemoryError নিক্ষেপ করা হবে।
- একবার আমরা OutOfMemory ধরব ত্রুটি, আমরা ত্রুটিটি লগ করতে পারি।
উদাহরণ
public class OutOfMemoryErrorDemo { public static void main(String[] args) throws Exception { int dummyArraySize = 15; System.out.println("Max JVM memory: " + Runtime.getRuntime().maxMemory()); long memoryConsumed = 0; try { long[] memoryAllocated = null; for(int loop = 0; loop < Integer.MAX_VALUE; loop++) { memoryAllocated = new long[dummyArraySize]; memoryAllocated[0] = 0; memoryConsumed += dummyArraySize * Long.SIZE; System.out.println("Memory Consumed till now: " + memoryConsumed); dummyArraySize *= dummyArraySize * 2; Thread.sleep(500); } } catch (OutOfMemoryError outofMemory) { System.out.println("Catching out of memory error"); //Log the information, so that we can generate the statistics throw outofMemory; } } }
আউটপুট
Max JVM memory: 119537664 Memory Consumed till now: 960 Memory Consumed till now: 29760 Memory Consumed till now: 25949760 Catching out of memory error Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at OutOfMemoryErrorDemo.main(OutOfMemoryErrorDemo.java:9)
OOM এর মূল কারণ খুঁজে বের করার পদক্ষেপগুলি
ধাপ 1:OutOfMemoryError এ একটি হিপ ডাম্প তৈরি করুন
VM আর্গুমেন্ট -XX:+HeapDumpOnOutOfMemoryError দিয়ে অ্যাপ্লিকেশনটি শুরু করুন . এটি JVM কে একটি হিপ ডাম্প তৈরি করতে বলবে যখন একটি OOM ঘটে
$ java -XX:+HeapDumpOnOutOfMemoryError ...
ধাপ 2:সমস্যাটি পুনরুত্পাদন করুন
যদি আমরা সমস্যা পুনরুত্পাদন করতে না পারি উন্নয়ন পরিবেশে , আমাদের উৎপাদন ব্যবহার করতে হতে পারে পরিবেশ . যখন আমরা সমস্যাটি পুনরুত্পাদন করি এবং অ্যাপ্লিকেশনটি একটি OOM থ্রো করে, এটি একটি হিপ ডাম্প ফাইল তৈরি করবে৷
ধাপ3:হিপ ডাম্প ফাইল ব্যবহার করে সমস্যাটি তদন্ত করুন
VisualVM ব্যবহার করুন হিপ ডাম্প ফাইল পড়তে এবং সমস্যাটি নির্ণয় করুন। ভিজ্যুয়ালভিএম JDK_HOME/bin/jvisualvm-এ অবস্থিত একটি প্রোগ্রাম . হিপ ডাম্প ফাইল অ্যাপ্লিকেশনটির মেমরি ব্যবহার সম্পর্কে সমস্ত তথ্য রয়েছে৷
৷