> 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: - update apple and linux impl - unlimited buffer for mac in non-signal handling context (vm.info) ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27971/files - new: https://git.openjdk.org/jdk/pull/27971/files/2a0f6f97..19a15b51 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27971&range=11 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27971&range=10-11 Stats: 55 lines in 5 files changed: 6 ins; 39 del; 10 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
