Possible Duplicate:
Creating a memory leak with Java
There is a “Garbage Collector” in Java, but does this mean that memory leaks are totally absent in a Java applications? If not, how and why do they happen?
I am more interested in scenarios in applications using JavaSE.
No – memory leaks can still exists in Java. They are just of a “different kind”.
Wiki: Memory Leak
In the case of Java it (normally) is when an unused/unneeded object is never made eligible for reclamation. For instance, an object may be stashed in a global List and never removed even if the object is never accessed later. In this case the JVM won’t release the object/memory – it can’t – because the object might be needed later, even if it never is.
(As an aside, some objects, such as directly allocated ByteBuffers also consume “out of JVM heap” memory which might not be reclaimed in a timely manner due to the nature of finalizers and memory pressure.)
In the case of Java, a “memory leak” is a semantic issue and not so much an issue of “not being able to release under any circumstances”. Of course, with buggy JNI/JNA code, all bets are off 😉
Happy coding.