(Пожалуйста, поправьте меня, если я ошибаюсь)
Я понимаю, что когда вы запускаете Java-программу с помощью команды java,
java MyProg
программа будет запущена на новой JVM.
Что загружает программу в новую JVM? это JRE порождает новую тему?
Если каждая программа работает в своей собственной JVM, могут ли они общаться друг с другом?
Ранее я задавал вопрос о том, как использовать JMX для отправки запросов в Java-программу, работающую локально. Я обнаружил, что если команды JMX выдаются локально, мне не нужен номер порта. Ответ состоял в том, что клиентское приложение (например, jconsole, jvisualvm, jprobe и т. Д.) Выполняет поиск Java-приложений, запущенных на компьютере. Это нормально, но, учитывая, что клиентское приложение будет работать в другой JVM, чем приложение, которое оно хочет контролировать или с которым разговаривать, как именно они взаимодействуют друг с другом без номера порта (так как они не работают на той же JVM)?
Если запущены две программы, обычно будет 2 JVM. Работают ли JVM в одном и том же процессе JRE? И также не означает ли это, что две JVM должны иметь возможность общаться?
Спасибо