Sobes.tech
Senior

What are the causes of OutOfMemoryError and how to find a memory leak?

sobes.tech AI

Answer from AI

OutOfMemoryError occurs when the JVM cannot allocate enough memory for an object, usually due to heap exhaustion. Main causes:

  • Memory leaks: objects continue to reference and are not released by the garbage collector.
  • Incorrect JVM configuration (too small heap).
  • Creating too large objects or arrays.

To find memory leaks:

  1. Use profilers (VisualVM, YourKit, Eclipse MAT) to analyze heap dumps.
  2. Look for objects with many references that should not be alive.
  3. Analyze retention paths to identify reasons for object retention.
  4. Check code for static collections or caches that can grow uncontrollably.

Example: if there is a static list in the application where objects are added but never removed, it will lead to a leak.

Proper diagnosis and code optimization, as well as correct JVM configuration, will help avoid OutOfMemoryError.