Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Coverage ledger — Java (Section G, process-runtime)

Chapter: java.md — Java: Language Semantics, Standard Library, Process APIs, and Subprocesses.

Scope: Java SE 25 (current Oracle JDK LTS) — JLS SE 25 + JDK 25 API Javadoc + java command manual + JEPs; HotSpot/OpenJDK reference implementation (jdk-25+36 source) on Linux as substrate; POSIX deltas labeled; Windows brief. All sources retrieved 2026-10-13.

Sources: docs.oracle.com Java SE 25 API specification; JLS SE 25 (docs.oracle.com/javase/specs/jls/se25); JDK 25 java command manual (docs.oracle.com/en/java/javase/25/docs/specs/man/java.html); OpenJDK JEPs (openjdk.org); OpenJDK jdk-25+36 source (github.com/openjdk/jdk); man7.org man-pages exit(3). Per-row reference in the table.

Status definitions: documented = explanation exists in the chapter, required examples present, and the cited reference supports the claim; researched = verified but minimal exposition; source-limited = a named primary source was unreachable or the platform docs are silent (behavior stated and labeled, never invented); not-started = row reserved but not covered.

Layout map: §1 → PL-JV-001–013 · §2 → PL-JV-014–045 · §3 → PL-JV-046–056 · §4 → PL-JV-057–063 · §5 → PL-JV-064–074 · §6 → PL-JV-075–080.

Rollup: Inventoried: 80 / Documented: 78 / Remaining: 0 / Source-limited: 2

IDLanguage/API or behaviorCanonical signatureDocumentation pathAuthoritative referenceVersion/platform scopeStatus
PL-JV-001Checked vs unchecked exception classes (exact definition)—./java.md §1.3JLS SE 25 §11.1.3, docs.oracle.com/javase/specs/jls/se25/html/jls-11.htmlJava SE 25, all platformsdocumented
PL-JV-002Compile-time checked-exception checking (catch-or-declare; never-thrown catch error)—./java.md §1.3JLS SE 25 §11.2 (jls-11.html)Java SE 25documented
PL-JV-003Overload resolution: strict → loose (boxing) → variable-arity phases; most specific wins—./java.md §1.2JLS SE 25 §15.12.2 (jls-15.html)Java SE 25documented
PL-JV-004try/finally abrupt-completion rules; finally return/throw discards in-flight outcome—./java.md §1.4JLS SE 25 §14.20.2 (jls-14.html)Java SE 25documented
PL-JV-005try-with-resources: reverse-order close, non-null skip, close-exception suppression—./java.md §1.5JLS SE 25 §14.20.3 (jls-14.html)Java SE 25 (25 adds VariableAccess/_ resources)documented
PL-JV-006Suppressed-exception retrievalpublic final Throwable[] getSuppressed()./java.md §1.5, §2.7JDK 25 Javadoc, java/lang/Throwable.html#getSuppressed()Java SE 7+ (verified on JDK 25)documented
PL-JV-007Autoboxing identity cache −128..127; -XX:AutoBoxCacheMax raises upper bound—./java.md §1.6jdk-25+36 Integer.java (IntegerCache low = -128); Integer.valueOf contractJDK 25 HotSpotdocumented
PL-JV-008Unboxing null → NPE; numeric conditional unboxes (null operand NPEs)—./java.md §1.6JLS SE 25 §5.1.8 (jls-5.html), §15.25.2 (jls-15.html)Java SE 25documented
PL-JV-009Class initialization triggers, superclass-first order, declaring-class rule, textual order under init lock—./java.md §1.7JLS SE 25 §12.4.1/§12.4.2 (jls-12.html)Java SE 25documented
PL-JV-010Object.finalize still present in JDK 25, deprecated since 9 forRemovalprotected void finalize() throws Throwable./java.md §1.8JDK 25 Javadoc, java/lang/Object.html#finalize()JDK 25, all platformsdocumented
PL-JV-011Finalization deprecation-for-removal program; runFinalization deprecated for removal—./java.md §1.8JEP 421 (Delivered 18), openjdk.org/jeps/421; Runtime.html#runFinalization()JDK 18+documented
PL-JV-012Cleaner as the sanctioned post-GC cleanup mechanismpublic static Cleaner create() / public Cleanable register(Object obj, Runnable action)./java.md §1.8, §2.7JDK 25 Javadoc, java/lang/ref/Cleaner.htmlJava SE 9+ (verified JDK 25)documented
PL-JV-013Thread termination via uncaught-exception handler; JLS program-exit doors (5 situations)—./java.md §1.9, §3.7JLS SE 25 §12.8 (jls-12.html)Java SE 25documented
PL-JV-014System.exit — initiates shutdown sequence, blocks indefinitely, never returns/throwspublic static void exit(int status)./java.md §2.1, §3.3JDK 25 Javadoc, java/lang/System.html#exit(int)Java SE 25documented
PL-JV-015Runtime.exit — serialized; self-deadlock when called from a hookpublic void exit(int status)./java.md §2.1, §3.3JDK 25 Javadoc, java/lang/Runtime.html#exit(int)Java SE 25documented
PL-JV-016Runtime.halt — immediate, no shutdown sequencepublic void halt(int status)./java.md §2.1, §3.4JDK 25 Javadoc, java/lang/Runtime.html#halt(int)Java SE 25documented
PL-JV-017addShutdownHook — registers unstarted thread; IAE duplicate/running hook, ISE after sequence begunpublic void addShutdownHook(Thread hook)./java.md §2.1, §3.5JDK 25 Javadoc, java/lang/Runtime.html#addShutdownHook(java.lang.Thread)Java SE 25documented
PL-JV-018removeShutdownHook — false if unregistered; ISE after sequence begunpublic boolean removeShutdownHook(Thread hook)./java.md §2.1JDK 25 Javadoc, java/lang/Runtime.html#removeShutdownHook(java.lang.Thread)Java SE 25documented
PL-JV-019Thread start (second start → IllegalThreadStateException) and interruptible joinpublic void start() / public final void join(long millis) throws InterruptedException./java.md §2.2, §6.1JDK 25 Javadoc, java/lang/Thread.html#start(), #join(long)Java SE 25documented
PL-JV-020Interrupt semantics: wait/sleep/join → InterruptedException + status cleared; NIO channel → ClosedByInterruptException; else status setpublic void interrupt()./java.md §2.2, §6.1JDK 25 Javadoc, java/lang/Thread.html#interrupt()Java SE 25documented
PL-JV-021Daemon status: must precede start; virtual threads always daemonpublic final void setDaemon(boolean on)./java.md §2.2, §6.1JDK 25 Javadoc, java/lang/Thread.html#setDaemon(boolean)Java SE 25 (VT clause since 21)documented
PL-JV-022Uncaught-exception handler installation (thread-specific + default)public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler ueh) / public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler ueh)./java.md §2.2, §3.6JDK 25 Javadoc, java/lang/Thread.html#setUncaughtExceptionHandler(…), #setDefaultUncaughtExceptionHandler(…)Java SE 5+documented
PL-JV-023Handler chain: thread-specific → ThreadGroup → default (ThreadGroup may forward)public Thread.UncaughtExceptionHandler getUncaughtExceptionHandler() / void uncaughtException(Thread t, Throwable e)./java.md §2.2, §3.6JDK 25 Javadoc, java/lang/Thread.html#getUncaughtExceptionHandler(), Thread.UncaughtExceptionHandler.htmlJava SE 5+documented
PL-JV-024Virtual-thread builder and predicatepublic static Thread.Builder.OfVirtual ofVirtual() / public final boolean isVirtual()./java.md §2.2JDK 25 Javadoc, java/lang/Thread.html#ofVirtual(), #isVirtual()Java SE 21+documented
PL-JV-025ProcessBuilder constructors — command list stored by reference, not copiedpublic ProcessBuilder(List<String> command) / public ProcessBuilder(String... command)./java.md §2.3, §5.1JDK 25 Javadoc, java/lang/ProcessBuilder.htmlJava SE 5+documented
PL-JV-026command setters/getter — live list, validity not checkedpublic ProcessBuilder command(List<String> command) / public ProcessBuilder command(String... command) / public List<String> command()./java.md §2.3JDK 25 Javadoc, java/lang/ProcessBuilder.html#command(java.util.List)Java SE 5+documented
PL-JV-027Working directory; null inherits currentpublic ProcessBuilder directory(File directory)./java.md §2.3JDK 25 Javadoc, java/lang/ProcessBuilder.html#directory(java.io.File)Java SE 5+documented
PL-JV-028environment(): copy of current env, per-builder, no null keys/values, system-dependent modification supportpublic Map<String,String> environment()./java.md §2.3, §5.1JDK 25 Javadoc, java/lang/ProcessBuilder.html#environment()Java SE 5+documented
PL-JV-029redirect family (Redirect-typed + File convenience overloads, getters)public ProcessBuilder redirectInput(ProcessBuilder.Redirect source) / redirectOutput(ProcessBuilder.Redirect destination) / redirectError(ProcessBuilder.Redirect destination)./java.md §2.3JDK 25 Javadoc, java/lang/ProcessBuilder.html#redirectInput(…)Java SE 5+ (File overloads 7+)documented
PL-JV-030redirectErrorStream — merges stderr into stdout; stderr stream then nullpublic ProcessBuilder redirectErrorStream(boolean redirectErrorStream)./java.md §2.3, §5.2JDK 25 Javadoc, java/lang/ProcessBuilder.html#redirectErrorStream(boolean)Java SE 5+documented
PL-JV-031inheritIO — child stdio = parent’spublic ProcessBuilder inheritIO()./java.md §2.3JDK 25 Javadoc, java/lang/ProcessBuilder.html#inheritIO()Java SE 7+documented
PL-JV-032start() — spawns; IOException subtypes for not-found/denied/bad-dir/NUL argpublic Process start() throws IOException./java.md §2.3, §5.1JDK 25 Javadoc, java/lang/ProcessBuilder.html#start()Java SE 5+documented
PL-JV-033startPipeline — shell-free pipelines, stdout→stdin chainingpublic static List<Process> startPipeline(List<ProcessBuilder> builders)./java.md §2.3, §5.1JDK 25 Javadoc, java/lang/ProcessBuilder.html#startPipeline(java.util.List)Java SE 9+documented
PL-JV-034Redirect constants: PIPE (default), INHERIT, DISCARD (null-file discard)public static final ProcessBuilder.Redirect PIPE / INHERIT / DISCARD./java.md §2.4JDK 25 Javadoc, java/lang/ProcessBuilder.Redirect.htmlSE 5+ (DISCARD since 9)documented
PL-JV-035Redirect factories and accessors: from/to/appendTo; type()/file()public static ProcessBuilder.Redirect from(File file) / to(File file) / appendTo(File file) / public abstract ProcessBuilder.Redirect.Type type() / public File file()./java.md §2.4JDK 25 Javadoc, java/lang/ProcessBuilder.Redirect.html#from(java.io.File)Java SE 7+documented
PL-JV-036Process std streams — connected to child stdio; null when redirected/mergedpublic abstract InputStream getInputStream() / public abstract InputStream getErrorStream() / public abstract OutputStream getOutputStream()./java.md §2.5, §5.2JDK 25 Javadoc, java/lang/Process.htmlJava SE 5+ (abstract since 1.0)documented
PL-JV-037waitFor family: blocking; timeout/duration variants do NOT kill child; default impl polls exitValuepublic abstract int waitFor() throws InterruptedException / public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException / public boolean waitFor(Duration duration) throws InterruptedException./java.md §2.5, §5.3JDK 25 Javadoc, java/lang/Process.html#waitFor() (Duration overload Since: 24)SE 1.0 / 8 / 24documented
PL-JV-038exitValue — non-blocking poll; IllegalThreadStateException if runningpublic abstract int exitValue()./java.md §2.5, §5.3JDK 25 Javadoc, java/lang/Process.html#exitValue()Java SE 1.0+documented
PL-JV-039destroy/destroyForcibly/isAlive/supportsNormalTermination — normal-vs-forcible is implementation-dependentpublic abstract void destroy() / public Process destroyForcibly() / public boolean isAlive() / public boolean supportsNormalTermination()./java.md §2.5, §5.4JDK 25 Javadoc, java/lang/Process.html#destroy()SE 1.0 / 8 / 8 / 9documented
PL-JV-040pid and handle view (toHandle may be unsupported on bare Process subclasses)public long pid() / public ProcessHandle toHandle()./java.md §2.5JDK 25 Javadoc, java/lang/Process.html#pid()Java SE 9+documented
PL-JV-041onExit — completed regardless of exit status; cancelling does not affect the Process; + info/children/descendants delegatespublic CompletableFuture<Process> onExit()./java.md §2.5, §5.5JDK 25 Javadoc, java/lang/Process.html#onExit()Java SE 9+documented
PL-JV-042Character-stream bridges — documented buffered-input caveat when mixing byte/char APIsfinal BufferedReader inputReader() / final BufferedWriter outputWriter() / final BufferedReader errorReader()./java.md §2.5, §6.5JDK 25 Javadoc, java/lang/Process.html#inputReader()Java SE 17+documented
PL-JV-043ProcessHandle navigation: current/of/pid/parent/children/descendants/allProcesses (snapshots)public static ProcessHandle current() / public static Optional<ProcessHandle> of(long pid) / public long pid() / public Optional<ProcessHandle> parent() / public Stream<ProcessHandle> children() / public Stream<ProcessHandle> descendants() / public static Stream<ProcessHandle> allProcesses()./java.md §2.6, §5.6JDK 25 Javadoc, java/lang/ProcessHandle.htmlJava SE 9+documented
PL-JV-044ProcessHandle lifecycle/control: onExit/destroy/destroyForcibly/isAlive/supportsNormalTermination/compareTo/equalspublic CompletableFuture<ProcessHandle> onExit() / public boolean destroy() / public boolean destroyForcibly() / public boolean isAlive() / public boolean supportsNormalTermination() / public int compareTo(ProcessHandle other)./java.md §2.6, §5.6JDK 25 Javadoc, java/lang/ProcessHandle.html#onExit()Java SE 9+documented
PL-JV-045Info snapshot accessors — all Optional, platform-dependent availabilityOptional<String> command() / Optional<String[]> arguments() / Optional<String> commandLine() / Optional<Instant> startInstant() / Optional<Duration> totalCpuDuration() / Optional<String> user()./java.md §2.6JDK 25 Javadoc, java/lang/ProcessHandle.Info.htmlJava SE 9+documented
PL-JV-046Launch protocol: main(String[]) → no-arg static main → instance main (JEP 512 final in 25); compact source files; source-file mode—./java.md §3.1java command manual, docs.oracle.com/en/java/javase/25/docs/specs/man/java.html; JEP 512 (openjdk.org/jeps/512)JDK 25 (instance main final)documented
PL-JV-047Return from main: JVM exits only when last non-daemon thread ends; implicit-exit status unspecified (0 observed, impl)—./java.md §3.2JLS SE 25 §12.8; sibling chapter LG-JA-001 (impl status)Java SE 25 / HotSpotdocumented
PL-JV-048System.exit full documented behavior (sequence initiation, blocking, no return/throw)public static void exit(int status)./java.md §3.3JDK 25 Javadoc, java/lang/System.html#exit(int)Java SE 25documented
PL-JV-049Runtime.exit full documented behavior (serialization; hook self-deadlock warning)public void exit(int status)./java.md §3.3JDK 25 Javadoc, java/lang/Runtime.html#exit(int)Java SE 25documented
PL-JV-050Runtime.halt documented behavior (unconditional, immediate, no sequence)public void halt(int status)./java.md §3.4JDK 25 Javadoc, java/lang/Runtime.html#halt(int)Java SE 25documented
PL-JV-051Shutdown-sequence rules: 3 triggers; hooks start in unspecified order concurrently; hook registration prohibited after start; termination freezes all threads (no finally / no UEH / no TWR close)—./java.md §3.3JDK 25 Javadoc, java/lang/Runtime.html (class description)Java SE 25documented
PL-JV-052Hook uncaught exceptions → handler then hook counts terminated; thread-safe/defensive/quick API Note; infinite-loop hook stalls shutdown forever—./java.md §3.5JDK 25 Javadoc, java/lang/Runtime.html#addShutdownHook(java.lang.Thread)Java SE 25documented
PL-JV-053Uncaught-exception default behavior: trace to stderr, thread dies (ref impl); main-thread death → exit 1 (impl); handler-install → System.exit pattern—./java.md §3.6java/lang/Thread.UncaughtExceptionHandler.html; impl status per sibling chapter LG-JA-001JDK 25 / HotSpot launcherdocumented
PL-JV-054Thread death ≠ process death; daemons never block shutdown; frozen at termination—./java.md §3.6, §3.7, §6.1JLS SE 25 §12.8; Thread.html#setDaemon(boolean)Java SE 25documented
PL-JV-055Exit-status int truncated to least-significant 8 bits by OS (System.exit(256) observed as 0)—./java.md §3.9man-pages exit(3), man7.org/linux/man-pages/man3/exit.3.htmlLinux/POSIXdocumented
PL-JV-056Per-path termination table: main-return / System.exit / halt / signal / -Xrs / SIGKILL / hook-deadlock × (hooks, finally, finalizers, status)—./java.md §3.8Runtime.html; java.html (-Xrs); impl rows labeledJDK 25 + HotSpot + Linux/POSIXdocumented
PL-JV-057SIGHUP/SIGINT/SIGTERM initiate shutdown hooks (JVM-installed handlers)—./java.md §4.1java command manual (-Xrs section), docs.oracle.com/en/java/javase/25/docs/specs/man/java.htmlJDK 25, non-Windowsdocumented
PL-JV-058No public signal-handling API exists (documented platform limitation); hooks cannot identify the signal—./java.md §4.1java command manual; absence verified in SE 25 Javadoc indexJDK 25documented
PL-JV-059sun.misc.Signal internal API: handlers can’t cover VM-used signals (IAE); dispatch on a fresh MAX_PRIORITY thread, C handler returns immediatelypublic static synchronized SignalHandler handle(Signal sig, SignalHandler handler) throws IllegalArgumentException / public static void raise(Signal sig) throws IllegalArgumentException./java.md §4.2jdk-25+36 source, src/jdk.unsupported/share/classes/sun/misc/Signal.java (class Javadoc quoted)JDK 25 HotSpot (jdk.unsupported; not published SE API)documented
PL-JV-060-Xrs: no signal-mask changes / no handlers for SIGINT, SIGTERM, SIGHUP, SIGQUIT; hooks do not run on those signals; System.exit path unaffected; user code responsible for calling exit—./java.md §4.3java command manual (-Xrs), verbatim quotesJDK 25, all platformsdocumented
PL-JV-061SIGQUIT → thread dump on HotSpot (documented negatively via -Xrs consequence “SIGQUIT thread dumps aren’t available”)—./java.md §4.4java command manual (-Xrs consequences)JDK 25, non-Windows HotSpotdocumented
PL-JV-062libjsig / signal chaining for JNI libraries—./java.md §4.4Oracle Troubleshooting Guide signal-chaining page — unreachable at retrieval (2026-10-13); details labeled implementation behaviorJDK 25 HotSpotsource-limited
PL-JV-063Windows console control events → hooks (CTRL_C/CLOSE/LOGOFF/SHUTDOWN), CTRL_BREAK → thread dumps; -Xrs removes handler; CTRL_CLOSE bounded grace period—./java.md §4.5java command manual (Windows section)JDK 25, Windowsdocumented
PL-JV-064ProcessBuilder creation semantics: argv array (no shell/injection layer), snapshot at spawn, reuse = double spawn, documented start() failure modes—./java.md §5.1JDK 25 Javadoc, java/lang/ProcessBuilder.html#start()Java SE 25documented
PL-JV-065Documented pipe-buffer caution: limited stdio buffers → child may block or deadlock if streams not promptly read/written—./java.md §2.5, §5.2JDK 25 Javadoc, java/lang/Process.html (class description, verbatim quote)Java SE 25 (all platforms)documented
PL-JV-066Two-pipe stdout/stderr deadlock — worked example and cures (merge / concurrent drain / redirect); Linux pipe buffer ~64 KiB—./java.md §5.2java/lang/Process.html caution; Linux/POSIX pipe(2) buffer behaviorJDK 25 + Linux/POSIXdocumented
PL-JV-067waitFor family behavior: interruption throws InterruptedException, child unaffected; timeout returns false and does NOT kill; documented kill-after-timeout pattern—./java.md §5.3JDK 25 Javadoc, java/lang/Process.html#waitFor(long,java.util.concurrent.TimeUnit)Java SE 25documented
PL-JV-068exitValue poll contract (IllegalThreadStateException if running)public abstract int exitValue()./java.md §5.3JDK 25 Javadoc, java/lang/Process.html#exitValue()Java SE 25documented
PL-JV-069destroy→SIGTERM / destroyForcibly→SIGKILL on Unix; start-time guard prevents killing a reused pid—./java.md §5.4jdk-25+36 source, ProcessHandleImpl_unix.c destroy0 (int sig = (force == JNI_TRUE) ? SIGKILL : SIGTERM;) + ProcessHandleImpl.javaJDK 25 HotSpot, Unixdocumented
PL-JV-070destroy-then-observe race: isAlive may return true for a brief period after destroyForcibly (documented API Note); chain to waitFor—./java.md §5.3, §5.4JDK 25 Javadoc, java/lang/Process.html#destroyForcibly() (API Note)Java SE 25documented
PL-JV-071onExit async semantics + supervision patterns (get with timeout; allOf over onExit futures; cancel is a no-op on the process)public CompletableFuture<Process> onExit()./java.md §5.5JDK 25 Javadoc, java/lang/Process.html#onExit(); CompletableFuture.html#allOf(…)Java SE 9+ (JDK 25 verified)documented
PL-JV-072ProcessHandle trees: children/descendants/allProcesses are snapshots; descendants recursive; no atomic tree-kill guarantee; Info diagnostics—./java.md §5.6JDK 25 Javadoc, java/lang/ProcessHandle.html#descendants()Java SE 9+documented
PL-JV-073Signal-killed child status reported by waitFor/exitValue: JDK API docs specify only “0 indicates normal termination” — value 128+N stated from source (WTERMSIG_RETURN = WTERMSIG + 0x80)—./java.md §5.7jdk-25+36 source, ProcessHandleImpl_unix.c (comment: “best value to return is 0x80 + signal number”); JDK API docs silentJDK 25 HotSpot, Unixsource-limited
PL-JV-074Virtual threads + process waiting: ProcessImpl.waitFor parks on j.u.c lock (no pinning); JEP 491 (24) removes synchronized pinning; pump threads are impl detail; POSIX vs Windows deltas—./java.md §5.8, §5.9jdk-25+36 source, ProcessImpl.java (waitFor body); JEP 491 (openjdk.org/jeps/491); java manual (Windows)JDK 24+/25 HotSpotdocumented
PL-JV-075Shutdown-time concurrency: hooks run concurrently with live threads; must be thread-safe/defensive/quick; executor non-daemon threads keep JVM alive after main returns—./java.md §6.2, §6.3JDK 25 Javadoc, java/lang/Runtime.html (API Note); Thread.html#setDaemon(boolean)Java SE 25documented
PL-JV-076CompletableFuture supervision: allOf semantics (exceptional → CompletionException cause), get (checked) vs join (unchecked)public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs) / public T get() throws InterruptedException, ExecutionException / public T join()./java.md §2.7, §6.2JDK 25 Javadoc, java/util/concurrent/CompletableFuture.html#allOf(…)Java SE 8+ (verified 25)documented
PL-JV-077fd/handle ownership of Process streams: streams usable until unreferenced or closed; process not killed by GC; implementation closes unreferenced fds; no finalizers on Process; Cleaner as wrapper-level backstop (not guaranteed at termination)—./java.md §6.4, §6.5JDK 25 Javadoc, java/lang/Process.html (class description, verbatim); java/lang/ref/Cleaner.htmlJava SE 25documented
PL-JV-078Deadlock inventory: two-pipe, stdin overfeed, undrained+waitFor, System.exit-in-hook deadlock, hook↔service deadlock, class-init deadlock—./java.md §6.6Runtime.html; Process.html; JLS §12.4.2Java SE 25documented
PL-JV-079Races and leaks: destroy-then-exitValue race; live environment()/command(List) mutation racing start(); descendants snapshot races; zombies until reaped; unclosed streams; ThreadLocal in pooled carriers; accidental double-spawn—./java.md §6.7Process.html; ProcessBuilder.html; JEP 444 (thread-local guidance); Linux/POSIX zombie semanticsJDK 25 + Linux/POSIXdocumented
PL-JV-080Virtual-thread scheduling effects on process supervision: waitFor parks/unmounts; synchronized no longer pins (JEP 491); java.io reworked to avoid pinning; onExit callbacks over parked platform threads—./java.md §6.8JEP 444 (openjdk.org/jeps/444); JEP 491 (openjdk.org/jeps/491); ProcessImpl.java sourceJDK 21/24+/25documented

Verification notes: All signatures copied verbatim from the JDK 25 Javadoc pages listed in the chapter References (retrieved 2026-10-13). The two source-limited rows are stated-and-labeled limitations, not gaps: PL-JV-062 names the unreachable Oracle Troubleshooting-Guide page; PL-JV-073 names the JDK-docs silence and cites the jdk-25+36 source that pins the implementation value. Row count 80 = chapter coverage ledger declaration; documented 78 + source-limited 2; remaining 0.