Download Latest Version oshi-dist-7.4.4.zip (9.0 MB)
Email in envelope

Get an email when there's a new version of OSHI

Home / oshi-parent-7.4.4
Name Modified Size InfoDownloads / Week
Parent folder
oshi-dist-7.4.4.zip 2026-08-07 9.0 MB
README.md 2026-08-06 5.3 kB
Release 7.4.4 source code.tar.gz 2026-08-06 2.7 MB
Release 7.4.4 source code.zip 2026-08-06 3.7 MB
Totals: 4 Items   15.4 MB 4
  • #3561: Fix AIX reporting the current instant as its boot time, and an uptime of zero, when the uptime command transiently failed; parse the year-less who -b format AIX 7.3 emits, and add ParseUtil.parseYearlessDateToEpoch - @dbwiddis.
  • #3562: Make Linux getMaxFreq() reproducible by resolving it from the cpufreq policy, lshw, and the vendor frequency rather than folding in a live frequency reading, returning -1 when none of those reports a maximum - @dbwiddis.
  • #3564: Fix Linux getSoftOpenFileLimit() returning -1 for a process whose hard open-file limit is unlimited, discarding a valid soft limit - @dbwiddis.
  • #3566: Read the OpenBSD host name from gethostname rather than resolving it, so getHostName() no longer reports localhost on a host whose name is not resolvable - @dbwiddis.
  • #3568: Fix the Windows FFM getProcess(pid) and getProcesses(pids) returning a process that getProcesses() does not list, reporting a recently exited process as running with no path, no threads, and no CPU time - @dbwiddis.
  • #3569: Fix three JNA/FFM divergences on the file-system and network paths: the macOS FFM file store never bailed when the DiskArbitration session failed to open (the guard tested a foreign pointer for Java null, which it can never be); Windows volumes whose mount-point list exceeds the buffer were dropped rather than re-read on ERROR_MORE_DATA (missing entirely on JNA, keyed on the wrong error code on FFM); and the Windows FFM TCP/UDP connection queries could transiently return no connections under connection churn, where JNA retries on ERROR_INSUFFICIENT_BUFFER - @dbwiddis.
  • #3573: Report Linux VRAM from NVML rather than summing the prefetchable PCI BARs, which measures the card's address aperture (capped at 256 MiB without Resizable BAR) instead of its memory size - @Krillsson.
  • #3574: Never report a decrease in a BSD process's or thread's kernel or user time across updateAttributes(). DragonFly's ps TIME column sums only the currently live LWPs, so an exiting thread takes its accumulated CPU time out of the process total - @dbwiddis.
  • #3577: Fix macOS OSProcess#getArguments() and getEnvironmentVariables() corrupting every entry after one containing a non-ASCII character. The KERN_PROCARGS2 parser advanced its offset by each entry's length in characters rather than bytes, landing mid-character and returning garbage in place of the remaining arguments - @dbwiddis.
  • #3578: Fix the Windows JNA AMD GPU path reporting a power draw of -1 on Overdrive 6-era Radeon cards. Power draw is read through the Overdrive 6 API but was gated on Overdrive N support, rejecting the cards that implement the call; the Overdrive capability check also ignored the library's supported flag - @dbwiddis.
  • #3579: Align the macOS FFM firmware, baseboard, computer system, and CPU manufacturer strings with the JNA backend when decoding IORegistry byte properties, which are NUL-terminated within a fixed-width buffer. The FFM path stripped every NUL and trimmed, so a property holding several NUL-separated strings would be returned concatenated and significant leading or trailing spaces discarded, where the JNA twin stopped at the first NUL. Add ParseUtil.decodeNulTerminated and decode through it on both backends - @dbwiddis.
  • #3581: Fix ParseUtil.parseHertz throwing NumberFormatException instead of returning the documented -1 when the decimals are introduced by something other than a decimal point, such as the comma separator a localized frequency string can carry - @dbwiddis.
  • #3582: Fix AIX dropping the highest-pid processes from getProcesses(), and getProcess() returning null for them, when enough processes spawn between the two perfstat_process calls to overrun the padded buffer. Because perfstat sorts by pid, the entry most often lost is the calling JVM's own - @dbwiddis.
  • #3583: Guarantee OperatingSystem#getCurrentProcess() never returns null. It delegated to getProcess(int), which is documented to return null, so a failed read of the calling process left every non-Linux getCurrentThread() throwing a NullPointerException - @dbwiddis.

Full change log

Source: README.md, updated 2026-08-06