lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Noll <>
Subject Re: MMapDirectory vs RAMDirectory
Date Tue, 06 Jun 2006 00:05:48 GMT
Peter Keegan wrote:

> There is no 'unmap' method, so my understanding is that the file mapping is
> valid until the underlying buffer is garbage-collected. However, forcing 
> the gc doesn't help.

You're half right.

The file mapping is indeed valid until the underlying buffer is garbage 
collected, but you can't "force" the GC -- there is no API which does that.

Note the wording in the Javadoc for System.gc():

   "Calling the gc method **suggests** that the Java Virtual Machine
    expend effort toward recycling unused objects in order to make the
    memory they currently occupy available for quick reuse. When control
    returns from the method call, the Java Virtual Machine has made a
    best effort to reclaim space from all discarded objects."

> The file deletes don't fail on Linux, but I'm wondering if there is still a
> memory leak?

Linux allows you to delete a file while someone has the file descriptor 
open, but the file descriptor will remain valid (i.e. the delete doesn't 
actually occur) until everyone releases the file descriptor.

I ran into similar issues as these when working on other things, and 
eventually ended up switching to using a RandomAccessFile, as those can 
be closed.  Otherwise you're right -- the workaround is to routinely try 
to delete the file.


Daniel Noll

Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia    Ph: +61 2 9280 0699
Web:                        Fax: +61 2 9212 6902

This message is intended only for the named recipient. If you are not
the intended recipient you are notified that disclosing, copying,
distributing or taking any action in reliance on the contents of this
message or attachment is strictly prohibited.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message