On Mon, 16 Mar 2026 15:34:48 GMT, Kieran Farrell <[email protected]> wrote:
>> Currently, it is only possible to read the number of open file descriptors
>> of a Java process via the `UnixOperatingSystemMXBean` which is only
>> accessible via JMX enabled tools. To improve servicability, it would be
>> benifical to be able to view this information from jcmd VM.info output or
>> hs_err_pid crash logs. This could help diagnose resource exhaustion and
>> troubleshoot "too many open files" errors in Java processes on Unix
>> platforms.
>>
>> This PR adds reporting the current open file descriptor count to both jcmd
>> VM.info output or hs_err_pid crash logs by refactoring the native JNI logic
>> from
>> `Java_com_sun_management_internal_OperatingSystemImpl_getOpenFileDescriptorCount0`
>> of the `UnixOperatingSystemMXBean` into hotspot. Apple's API for retrieving
>> open file descriptor count provides an array of the actual FDs to determine
>> the count. To avoid using `malloc` to store this array in a potential signal
>> handling context where stack space may be limited, the apple implementation
>> instead allocates a fixed 32KB struct on the stack to store the open FDs and
>> only reports the result if the struct is less than the max (1024 FDs). This
>> should cover the majoirty of use cases.
>
> Kieran Farrell has updated the pull request incrementally with one additional
> commit since the last revision:
>
> update indentations
src/hotspot/os/bsd/os_bsd.cpp line 2617:
> 2615: int nfiles = res / sizeof(struct proc_fdinfo);
> 2616: if ((size_t)nfiles >= max_fds) {
> 2617: st->print_cr("Open File Descriptors: >%zu", max_fds);
This is the > mentioned below, that should have a space after it
(or the other print should not have a space, personally I like the space.. 8-) )
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27971#discussion_r2942397173