This problem could be because my bookie direct memory is always at high end, Initially DirectMemory with bookies was set to 4GB for a long time, 3 months back we saw that DirectMemory is exhausted so we increased it and ended up assigning 20GB to it to make the cluster stable.
We see that 20GB is also completely utilised and our bookie kept getting restarted. I believe Direct Memory could be one reason of our storage not getting cleaned up.