RFR: 8129776: The optimized Stream returned from Files.lines should unmap the mapped byte buffer (if created) when closed [v3]

Alan Bateman alanb at openjdk.java.net
Mon Feb 8 17:14:43 UTC 2021


On Wed, 27 Jan 2021 19:32:07 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

>> Please review this proposed change to unmap the mapped buffer shared between the root and sub-spliterators used in the optimized `Stream` implementation returned by `Files.lines()`. A reference counter is added to track the total number of spliterators sharing the buffer. It is set to 1 when the shared buffer is created, and incremented each time a sub-spliterator is created. It is decremented when traversing begins or when the spliterator is closed. If the counter is zero after it is decremented then the shared buffer is unmapped.
>
> Brian Burkhalter has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8129776: Wire up MappedByteBuffer.unmapper().unmap()

Marked as reviewed by alanb (Reviewer).

src/java.base/share/classes/java/nio/file/FileChannelLinesSpliterator.java line 97:

> 95:     // closed before traversal.  If the count is zero after decrementing, then
> 96:     // the buffer is unmapped.
> 97:     private AtomicInteger bufRefCount;

This should be final but otherwise the changes are okay..

-------------

PR: https://git.openjdk.java.net/jdk/pull/2229


More information about the nio-dev mailing list