> 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 two additional 
commits since the last revision:

 - use scratch buffer in hs_error mac
 - use scratch buffer in hs_error mac

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/27971/files
  - new: https://git.openjdk.org/jdk/pull/27971/files/cf54d9f9..2a0f6f97

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=27971&range=10
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27971&range=09-10

  Stats: 57 lines in 3 files changed: 46 ins; 7 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/27971.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27971/head:pull/27971

PR: https://git.openjdk.org/jdk/pull/27971

Reply via email to