According to the lucene file formats, it is only .tii and couple more files that are read fully in the memory. I am trying to understand why does giving more JVM memory to lucene makes it run faster. - is it that GC is not run too frequently? - or does lucene build caches based on content of (.tis, .fdt) if there is more heap available? Related question is what does "warming of IndexSearcher" means internally to Lucene. What content would lucene load during warm up? Can someone shed some light on it? I would like to know the minimum memory I must give to Lucene for its optimal performance. And no more. maneesha