JVM Does Not Use 'posix_spawn' Even After Applying Patch for JDK-5049299 (Doc ID 1968775.1)

Last updated on AUGUST 28, 2015

Applies to:

Java SE JDK and JRE - Version 7 to 7 [Release 7]
Java SE JDK and JRE - Version 1.5.0 to 1.5.0 [Release 1.5]
Oracle Solaris on x86-64 (64-bit)
Oracle Solaris on SPARC (32-bit)
Oracle Solaris on SPARC (64-bit)
Oracle Solaris on x86 (32-bit)
The enhancement to allow the JVM to use posix_spawn instead of fork when creating new processes from inside Java on the Solaris OS was added in Java SE 8.
This was documented in the Enhancement Request JDK-5049299
It was backported to Java SE 7 with Update 55.

Goal

Up until this enhancement was added, Java used the fork/exec mechanism when it is was asked to invoke an external process.  This is done via the "java.lang.Runtime.exec()" method.  The fork function duplicates the address space of the parent process.

If the process has grown large, and if several of these requests are made in a short time, performance can suffer and the parent process may even run out of virtual address space.  Therefore, the goal would be to not hit an out-on-memory condition or performance problem when creating another process from inside a running java process.

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms