JavaAdvanced#memory#gc

What causes a memory leak in Java despite having garbage collection?

Memory leaks happen when objects remain reachable (referenced) even though they're no longer needed, e.g., static collections that keep growing, unclosed resources, or listeners not deregistered, preventing GC from reclaiming them.

Example
static List<Object> cache = new ArrayList<>();
void addToCache(Object o) { cache.add(o); } // never removed, grows forever -> leak

Related Questions

1
JavaAdvanced#memory#gc

What is the difference between strong, weak, soft, and phantom references?

Open
2
JavaAdvanced#gc#jvm

What is the difference between G1, CMS, and ZGC garbage collectors?

Open
3
JavaIntermediate#gc#memory

What is the purpose of the finalize() method and why is it discouraged?

Open