Skip to main content

Featured post

Kafka with Spring boot

Kafka server setup is already mentioned in another post.  The goal of this post is to provide spring boot implementation for custom object produce and consume by kafka broker.

Java Out Of Memory Error

java.lang.OutOfMemoryError is thrown when there is insufficient space to allocate an object. That is, garbage collection cannot make any further space available to accommodate a new object, and the heap cannot be further expanded.

An OutOfMemoryError does not necessarily imply a memory leak. The issue might simply be a configuration issue, for example, if the specified heap size (or the default size if not specified) is insufficient for the application.


The first step in diagnosing an OutOfMemoryError is to examine the full error message. In the exception message, further information is supplied after “java.lang.OutOfMemoryError”. Here are some common examples of what that additional information may be, what it may mean, and what to do about it:

  • Java heap space This indicates that an object could not be allocated in the heap. The issue may be just a configuration problem. You could get this error, for example, 
    • If the maximum heap size specified by the –Xmx command-line option (or selected by default) is insufficient for the application. 
    • It could also be an indication that objects that are no longer needed cannot be garbage collected because the application is unintentionally holding references to them. The HAT ( Heap Analysis Tool ) tool can be used to view all reachable objects and understand which references are keeping each one alive.
    • the excessive use of finalizers by the application such that the thread to invoke the finalizers cannot keep up with the rate of addition of finalizers to the queue. One other potential source of this error could be  The jconsole management tool can be used to monitor the number of objects that are pending finalization. 
  • PermGen space This indicates that the permanent generation ( area of the heap where the JVM stores its metadata ) is full. If an application loads a large number of classes, then the permanent generation may need to be increased. You can do so by specifying the command line option –XX:MaxPermSize=n, where n specifies the size. 
  • Requested array size exceeds VM limit This indicates that the application attempted to allocate an array that is larger than the heap size. For example, if an application tries to allocate an array of 512MB but the maximum heap size is 256MB, then this error will be thrown. In most cases, the problem is likely to be either that the heap size is too small or that a bug results in the application attempting to create an array whose size is calculated to be incorrectly huge. 

Comments

Popular posts from this blog

Code Smell বা বাজে কোড

Code Smell বা বাজে কোড বোঝার কিছু প্যাটার্ন আছে যা দেখে বোঝা যায়। এখানে এই সম্পর্কে কিছু ধারনা দেয়া হল। code smell সাধারনত ২ ভাগে বিভক্ত। Code smells within classesCode smells between classesCode smells within classes:
একটা ক্লাসের মধ্যে সাধারনত মেথড গুলোয় কি ধরনের কোড স্মেল হয়ে থাকে এখানে তাই বর্ননা করা হয়েছে। নাম গুলি ইংরেজিতেই রাখা আছে যাতে সরাসরি ইংরেজি নাম দিয়ে গুগল করলেই সব ধরনের রিসোর্স পাওয়া যায়। Comments:
বোঝার মত কমেন্ট আর না বোঝার মত কমেন্টের মধ্যে একটা সুন্দর পার্থক্য আছে। যদি কমেন্ট এমন হয় যে মেথড বা স্টেটমেন্ট ‘কেন’ বাদ দিয়ে ‘কি’ ব্যাখ্যা করে, তাহলেই বুঝতে হবে, কমেন্ট রিমুভ করতে হবে। আর যদি পারা যায় তবে এমনভাবে রিফ্যাক্টর করতে হবে যাতে কমেন্ট না লাগে। কমেন্ট কখনো এক্সিকিউট করে না, এবং এটাই আমরা ভুলে যাই।
কমেন্ট মেশিনের জন্য না, মানুষের বোঝার জন্য লেখা হয়।

Code Smell বা বাজে কোড

Code Smell বা বাজে কোড বোঝার কিছু প্যাটার্ন আছে যা দেখে বোঝা যায়। এখানে এই সম্পর্কে কিছু ধারনা দেয়া হল। code smell সাধারনত ২ ভাগে বিভক্ত। Code smells within classesCode smells between classesCode smells between classes দুই বা ততোধিক ক্লাসের মধ্যে সাধারনত কি ধরনের কোড স্মেল হয়ে থাকে এখানে তাই বর্ননা করা হয়েছে। নাম গুলি ইংরেজিতেই রাখা আছে যাতে সরাসরি ইংরেজি নাম দিয়ে গুগল করলেই সব ধরনের রিসোর্স পাওয়া যায়। Alternative classes with different interfaces: দুইটা মানুষের ভিতরে সবকিছুই এক, শুধু চেহারা ছাড়া মানে যদি দুইটা ক্লাসের ভেতরের স্ট্রাকচার একই হয় কিন্তু বাহিরের আউটলুক ভিন্ন হয় বা যদি ইন্টারফেস আলাদা হয়, সেক্ষেত্রে দুইটা ক্লাসই একটা ইন্টারফেস শেয়ার করতে পারে।

Java Heap Dump

Overview A heap dump is a snapshot of all the objects that are in memory in the JVM at a certain moment. They are very useful to troubleshoot memory-leak problems and optimize memory usage in Java applications.
Heap dumps are usually stored in binary format hprof files.