Java ProcessBuilder内存

时间:2012-06-04 15:17:24

标签: java memory processbuilder

我想知道是否有人确切知道ProcessBuilder / Runtime.exec()是否在JVM内存的空间内执行,或者它是否使用完全独立的系统内存并以某种方式将输出发送到Java。我找不到关于这个主题的任何文件。

我认为它是前者,因为安全问题并且能够读取输出,但我想绝对肯定。

3 个答案:

答案 0 :(得分:5)

新进程在启动它的Java进程之外运行。作为process management的一部分,操作系统将内存分配给新进程。

Java类ProcessBuilder,它提供了一个用于启动和与新进程通信的接口,在Java进程内部运行。

答案 1 :(得分:0)

很明显,exec为不熟悉操作系统术语的人启动了一个新流程或程序。这就是为什么它具有输入输出功能,设置环境的能力以及等待外部程序返回的能力。

The first line of the javadoc says it all

Executes the specified string command in a separate process.

The command argument is parsed into tokens and then executed as a command in a
separate process. The token parsing is done by a StringTokenizer created by the 
call:

     new StringTokenizer(command)


with no further modifications of the character categories. This method has exactly
the same effect as exec(command, null).

答案 2 :(得分:0)

来自Java SE的concurrency参考,据说:

  

进程具有自包含的执行环境。一个过程   通常有一套完整的私有基本运行时资源;在   特别是,每个进程都有自己的内存空间。

如果您对内部感兴趣,请从openJDK中检查UNIXProcess类。