Память Java ProcessBuilder

Мне было интересно, знает ли кто-нибудь с уверенностью, выполняется ли ProcessBuilder/Runtime.exec() внутри пространства памяти JVM или использует полностью отдельную системную память и каким-то образом отправляет вывод на Java. Я не смог найти никакой документации по этому вопросу.

Я предполагаю, что это первое из-за проблем с безопасностью и возможности чтения вывода, но я хотел бы быть абсолютно уверенным.


person kevin948    schedule 04.06.2012    source источник


Ответы (3)


Новый процесс запускается вне Java-процесса, который его запустил. Выделением памяти новому процессу управляет операционная система в рамках управления процессами.

Класс Java ProcessBuilder, предоставляющий интерфейс для запуска нового процесса и взаимодействия с ним, выполняется внутри процесса Java.

person Andy Thomas    schedule 04.06.2012
comment
Понятно. Спасибо за лаконичный ответ! - person kevin948; 04.06.2012

Кажется довольно очевидным, что exec запускает новый процесс или программу для тех, кто не разбирается в терминологии операционной системы. Вот почему у него есть средства ввода-вывода, возможность устанавливать среду и возможность ждать возврата внешней программы.

первая строка javadoc говорит сама за себя.

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).
person Edwin Buck    schedule 04.06.2012

Из справочника по параллельности по Java SE сказано, что:

Процесс имеет автономную среду выполнения. Процесс обычно имеет полный частный набор основных ресурсов времени выполнения; в частности, каждый процесс имеет свое собственное пространство памяти.

Если вас интересует внутреннее устройство, проверьте класс UNIXProcess из openJDK.

person Daniel H.    schedule 04.06.2012