JVM и Java-процесс

Это может быть очень простой запрос о Java JVM. Если я запустил 2 отдельные программы с помощью сценария bash, 2 процесса запущены, и я могу видеть процессы с помощью команды ps -ef.

Означает ли это, что они работают как две отдельные JVM? У меня есть этот запрос, так как я вижу, что идентификатор родительского процесса (PPID) одинаков для обоих процессов.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
234
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
Does that mean they are running as 2 separate JVM's?

Да. Команда «java» запускает JVM.

Что тогда говорит нам PPID? Разве один и тот же PPID не означает, что эти 2 процесса являются частью одного и того же процесса?

ASD 14.12.2020 01:52

PPID — это идентификатор родительского процесса. Означает, что у двух процессов один и тот же родитель — оболочка, которая интерпретирует ваш скрипт. (Кроме того: «процесс, являющийся частью процесса» ничего не значит)

a guest 14.12.2020 02:08

Да, оба являются двумя совершенно отдельными JVM, работающими как собственные процессы ОС. Сюда входят сборщик мусора, JIT-компилятор и все остальные обычные вещи.

У каждого процесса ОС есть родитель, если не что иное, то это процесс «init», который запускается первым при загрузке ОС.

Кстати. Инструменты командной строки Java, особенно jcmd, действительно хороши для изучения процессов java/jvm на вашем компьютере — например. вы можете просто ввести jcmd, чтобы перечислить их все; введите jcmd <PID> help, чтобы проверить список доступных команд для определенного процесса.

htop — еще один хороший инструмент для изучения иерархии процессов.

Другие вопросы по теме