Over a million developers have joined DZone.

Java - OOM Example

Learn more about Kotlin, a new programming language designed to solve problems that software developers face every day brought to you in partnership with JetBrains.

I did an experiment today and wrote a code snippet that would ultimately fail with an OutOfMemory (OOM) error. There are 2 variations in what I did.

1. Class with explicit System.gc() call

2. Class without explicit System.gc() call

As expected, both the executions fail with OOM. But what is interesting is the free memory pattern generated by both. Please refer to the attachment for details and share your thoughts/comments on this.

Here is the code.


import java.util.ArrayList;
import java.util.List;

public class JavaOOM {

   public static void main(String[] args) {
     System.out.println("Initial freeMemory: "+Runtime.getRuntime().freeMemory()/(1024*1024));
     oom1();

   }
   
   private static void oom1() {
     List<String> myList = new ArrayList<String>();
     for (long i=0; ; i++) {
       myList.add(Long.valueOf(i).toString());
       if (i%100000==0) {
         //System.gc();
         System.out.println("i: "+i+", freeMemory: "+Runtime.getRuntime().freeMemory()/(1024*1024));
       }
     }
   }

}



The Java Zone is brought to you in partnership with JetBrains.  Discover how powerful static code analysis and ergonomic design make development not only productive but also an enjoyable experience.

Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}