top | item 40328916

(no title)

billjings | 1 year ago

But circular references don't leak in Java. You have to have a GC root (e.g. a static, or something in your runtime) somewhere pointing at the thing to actually leak it.

There is one case where a "circular" reference can appear to cause a leak that I know of: WeakHashMap. But that's because the keys, which are indeed cleaned up at some point once the associated value is GC'd, are themselves strongly retained references.

discuss

order

chopin|1 year ago

ThreadLocal can be another problem. Tomcat kills and recreates threads for this reason.

Edit: another one is swapping code by swapping class loaders. That can retain static references in the runtime class loader.