<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
actually so did I ...<br>
<br>
<br>
<div class="moz-cite-prefix">On 5/29/25 11:05 AM, Kevin Walls wrote:<br>
</div>
<blockquote type="cite" cite="mid:SN7PR10MB703286AF1A6FC40CA057C19E9766A@SN7PR10MB7032.namprd10.prod.outlook.com">
<style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
OK thanks Philippe, and Larry -</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I can't provoke a problem as it stands but yes it would be good
to take the recommendation of the API Note, that should keep us
efficient. 8-)</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I created a JBS issue:
<a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8358088">https://bugs.openjdk.org/browse/JDK-8358088</a></div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks!</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Kevin</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Philippe
Marschall <a class="moz-txt-link-rfc2396E" href="mailto:kustos@gmx.net"><kustos@gmx.net></a><br>
<b>Sent:</b> Thursday, May 29, 2025 5:47 PM<br>
<b>To:</b> Kevin Walls <a class="moz-txt-link-rfc2396E" href="mailto:kevin.walls@oracle.com"><kevin.walls@oracle.com></a>;
<a class="moz-txt-link-abbreviated" href="mailto:serviceability-dev@openjdk.java.net">serviceability-dev@openjdk.java.net</a>
<a class="moz-txt-link-rfc2396E" href="mailto:serviceability-dev@openjdk.java.net"><serviceability-dev@openjdk.java.net></a><br>
<b>Subject:</b> [External] : Re:
VirtualMachineImpl.checkCatchesAndSendQuitTo leaks file
handles</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
<br>
<br>
On 29.05.25 12:21, Kevin Walls wrote:<br>
> Hi --<br>
> <br>
> Just to be clear, is this an actual persistent leak
that we can observe, or is it that we could close earlier
with try-with-resources?<br>
> I'm not seeing a leak when calling a line like this
over and over in a tight loop:<br>
> final var cmdline = Files.lines(path).findFirst();<br>
<br>
I believe it is persistent until the Cleaner of
FileChannel closes it. <br>
The #line Javadoc [1] mentions the need to close<br>
<br>
> This method must be used within a try-with-resources
statement or<br>
> similar control structure to ensure that the
stream's open file is<br>
> closed promptly after the stream's operations have
completed.<br>
<br>
The Stream class Javadoc [2] explicitly mentions #lines as
well<br>
<br>
> Generally, only streams whose source is an IO
channel, such as those<br>
> returned by Files.lines(Path), will require closing.
If a stream does<br>
> require closing, it must be opened as a resource
within a<br>
> try-with-resources statement or similar control
structure to ensure<br>
> that it is closed promptly after its operations have
completed.<br>
<br>
If I run something like the code below I get <br>
java.nio.file.FileSystemException: marker: Too many open
files. You can <br>
also lower the number, set a breakpoint at
System.out.println and check <br>
/proc/<pid>/fd<br>
<br>
<br>
Path marker = Path.of("marker");<br>
if (!Files.exists(marker)) {<br>
Files.writeString(marker, "line1");<br>
}<br>
// usually over the max fd limit<br>
int fileCount = 100_000;<br>
// prevent streams from being garbage collected and
cleaner to run and <br>
close fd<br>
List<Stream<?>> streams = new
ArrayList<>(fileCount);<br>
for (int i = 0; i < fileCount; i++) {<br>
Stream<String> stream = Files.lines(marker);<br>
streams.add(stream);<br>
Optional<String> firstLine = stream.findFirst();<br>
if (firstLine.isPresent()) {<br>
if (firstLine.get().hashCode() == 42) {<br>
System.out.println('x');<br>
}<br>
}<br>
}<br>
System.out.println(streams.hashCode());<br>
<br>
[1] <br>
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/nio/file/Files.html#lines(java.nio.file.Path)" moz-do-not-send="true" class="moz-txt-link-freetext">https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/nio/file/Files.html#lines(java.nio.file.Path)</a>
<br>
[2] <br>
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/stream/Stream.html" moz-do-not-send="true" class="moz-txt-link-freetext">https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/stream/Stream.html</a>
<br>
<br>
Regards<br>
Philippe<br>
</div>
</span></font></div>
</blockquote>
<br>
</body>
</html>