Это может быть очень простой запрос о Java JVM. Если я запустил 2 отдельные программы с помощью сценария bash, 2 процесса запущены, и я могу видеть процессы с помощью команды ps -ef.
Означает ли это, что они работают как две отдельные JVM? У меня есть этот запрос, так как я вижу, что идентификатор родительского процесса (PPID) одинаков для обоих процессов.
Does that mean they are running as 2 separate JVM's?
Да. Команда «java» запускает JVM.
PPID — это идентификатор родительского процесса. Означает, что у двух процессов один и тот же родитель — оболочка, которая интерпретирует ваш скрипт. (Кроме того: «процесс, являющийся частью процесса» ничего не значит)
Да, оба являются двумя совершенно отдельными JVM, работающими как собственные процессы ОС. Сюда входят сборщик мусора, JIT-компилятор и все остальные обычные вещи.
У каждого процесса ОС есть родитель, если не что иное, то это процесс «init», который запускается первым при загрузке ОС.
Кстати. Инструменты командной строки Java, особенно jcmd
, действительно хороши для изучения процессов java/jvm на вашем компьютере — например. вы можете просто ввести jcmd
, чтобы перечислить их все; введите jcmd <PID> help
, чтобы проверить список доступных команд для определенного процесса.
htop
— еще один хороший инструмент для изучения иерархии процессов.
Что тогда говорит нам PPID? Разве один и тот же PPID не означает, что эти 2 процесса являются частью одного и того же процесса?