Dear folks,

i'm currently debugging a possible-memory leak in an application which uses 
zookeeper.
I found ZooKeeper$ZkWatchManager.existWatches growing large - probably a usage 
problem.

However i'm running a small test app in loop a session expiration happens from 
time to time. 
On an expired event the app closes the current ZooKeeper instance on and 
creates a new instance of it.
What i found out through debugging is that the number of ZooKeeper instances in 
the system is constantly growing, with most instances in state CLOSED. 
Forcing GC doesn't change anything here. Looking at the references it i seems 
like a closed ZooKeeper instance is only referenced by a ClientCnxn, and this 
ClientCnxn is referenced only bye a ZooKeeper + Send- and Event-thread.
So i suspect this reference cycle prevents the garbage collection...

Johannes

Reply via email to