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
--
Daniel Noll
Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia Ph: +61 2 9280 0699
Web: http://www.nuix.com.au/ 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]