Provide API to explicitly unmap MappedByteBuffer?
Alan Bateman
Alan.Bateman at oracle.com
Tue Mar 20 13:59:18 UTC 2018
On 20/03/2018 10:39, Langer, Christoph wrote:
>
> Hi,
>
> I was just handling a customer issue where Java code tried to delete a
> file on Windows which was mapped into memory vial FileChannel.map()
> before. It took me a little while to understand the issue but
> obviously the problem was that Windows still kept a delete lock on the
> file as long as the ByteBuffer was still mapped. This behavior is also
> documented cleanly:
> https://download.java.net/java/jdk10/docs/api/java/nio/MappedByteBuffer.html.
>
> So far so good, I just started wondering why there isn’t an API to
> force unmapping (cleanup) on a MappedByteBuffer? The app that opens
> the mapping simply reads a properties file at this place and I guess
> they should be able to change this place to use standard io easily and
> without observable performance problems. However, if they had a way to
> explicitly unmap the MappedByteBuffer it would also help.
>
> Was this topic already discussed? Is there a hard reason why explicit
> cleanup should not be offered? I guess people using MappedByteBuffers
> should know anyway what they are doing…
>
>
This has been discussed many times, it's a really hard problem that many
smart people have spend time on.
Andrew Haley may be able to say more about this. He has (or had) a
proposal on this but it involved deep changes in the VM. I don't know he
has prototyped it yet to see how feasible it is.
-Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20180320/52447435/attachment.html>
More information about the nio-dev
mailing list