UNIXProcess improvements

Chris Hegarty chris.hegarty at oracle.com
Fri Apr 16 16:00:34 UTC 2010


Martin,

I filed the following to track this:
   6944584: Improvements to subprocess handling on Unix

I took a look at the preliminary changes.
  * I'm not sure we can remove any previous authors names.
  * I assume the second part, buffering of data after process
    termination has not been implemented yet, right?

Otherwise look good.

Michael:
   You may want to take a look at these changes also.

-Chris.

Martin Buchholz wrote:
> Chris and/or Alan,
> I am planning some improvements to Process.
> Please file a bug.
> 
> Synopsis: Improvements to subprocess handling on Unix
> Description:
> Looking at UNIXProcess.java.linux, there are a number of possible improvements:
> 
> The "process reaper" thread should run in a thread pool to save on
> thread creation in case of repeated process creation.  Its stack size
> should be small.
> 
> If the process reaper thread throws a non-IOException (e.g. OOME)
> the thread creating the subprocess will hang,
> waiting for a signal from the reaper thread.
> 
> The JDK knows when the subprocess terminates.
> At that time, we cannot yet close the streams,
> because there may still be unread buffered data, but...
> the file descriptors underlying the subprocess streams
> can be drained, then closed, and the drained bytes can
> be added to the internal buffer.  This will solve most cases
> of (pandemic) poor file stream hygiene leading to
> file descriptor exhaustion or simply poor performance.
> 
> Preliminary fix here:
> http://cr.openjdk.java.net/~martin/webrevs/openjdk7/UNIXProcess/



More information about the core-libs-dev mailing list