Well, *assuming* that you're working in Java, you can't predict very much about when the garbage collector actually goes about freeing memory. Depending on how memory is measured, you may or may not be getting an accurate count.
I wonder what would happen if you allowed the JVM only a *little* more memory than you need. I suspect that you'd see memory increase to the maximum then fluctuate near the max forever as the gc would then be forced to collect the memory that was being marked as free (but not necessarily returned to the heap by the GC promptly) by re-opening the IndexSearcher. Hope this helps Erick